检查variables是否是dataframe

当我的函数f被调用一个variables我想检查var是一个pandas数据框:

def f(var): if var == pd.DataFrame(): print "do stuff" 

我想解决scheme可能很简单,但即使

 def f(var): if var.values != None: print "do stuff" 

我不能像预期那样工作。

isinstance ,没有别的。

PEP8明确表示isinstance是检查types的首选方法

 Yes: if isinstance(obj, int): No: if type(obj) is type(1): 

甚至不要考虑

 if obj.__class__.__name__ = "MyInheritedClass": expect_problems_some_day() 

isinstance处理inheritance(请参阅python中的isinstance()和type()之间的区别 )。 例如,它会告诉你一个variables是一个string( str还是unicode ),因为它们来自basestring

 if isinstance(obj, basestring): i_am_string(obj) 

使用内置的isinstance()函数。

 import pandas as pd def f(var): if isinstance(var, pd.DataFrame): print "do stuff"