私の関数 f が変数で呼び出されたとき、var が pandas データフレームであるかどうかを確認したい:
def f(var):
if var == pd.DataFrame():
print "do stuff"
解決策は非常に単純かもしれないと思いますが、
def f(var):
if var.values != None:
print "do stuff"
期待どおりに動作させることができません。
を使用isinstance
します。他には何もありません:
if isinstance(x, pd.DataFrame):
... # do something
PEP8isinstance
は、それが型をチェックするための好ましい方法であると明示的に述べています
No: type(x) is pd.DataFrame
No: type(x) == pd.DataFrame
Yes: isinstance(x, pd.DataFrame)
そして、考えることさえしないでください
if obj.__class__.__name__ = 'DataFrame':
expect_problems_some_day()
isinstance
継承を処理します ( type() と isinstance() の違いは何ですか? を参照)。たとえば、変数が文字列 (str
またはunicode
) であるかどうかがわかります。これらは から派生しているためbasestring
)
if isinstance(obj, basestring):
i_am_string(obj)
特にpandas
DataFrame
オブジェクトの場合:
import pandas as pd
isinstance(var, pd.DataFrame)
組み込みisinstance()
関数を使用します。
import pandas as pd
def f(var):
if isinstance(var, pd.DataFrame):
print("do stuff")