当我用变量调用函数f时我想检查var是否是pandas数据帧:
def f(var):
if var == pd.DataFrame():
print "do stuff"
我想解决方案可能很简单,但即使是
def f(var):
if var.values != None:
print "do stuff"
我无法让它按预期工作。
答案 0 :(得分:124)
使用内置的isinstance()
功能。
import pandas as pd
def f(var):
if isinstance(var, pd.DataFrame):
print("do stuff")
答案 1 :(得分:97)
使用isinstance
,别无其他:
if isinstance(x, pd.DataFrame):
... # do something
PEP8明确指出isinstance
是检查类型的首选方式
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
处理继承(请参阅What are the differences between type() and isinstance()?)。例如,它会告诉您变量是否为字符串(str
或unicode
),因为它们来自basestring
)
if isinstance(obj, basestring):
i_am_string(obj)
专门用于pandas
DataFrame
个对象:
import pandas as pd
isinstance(var, pd.DataFrame)