检查变量是否为数据帧
当我的函数f用一个变量调用时,我想检查var是否是一个熊猫数据框:
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
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
处理继承(请参见type()和isinstance()之间的区别?)。例如,它会告诉你,如果一个变量是一个字符串(str
或unicode
),因为他们从派生basestring
)if isinstance(obj, basestring): i_am_string(obj)
专门针对
pandas
DataFrame
对象:import pandas as pd isinstance(var, pd.DataFrame)