Python 检查变量是否为dataframe

Python 检查变量是否为dataframe,python,pandas,Python,Pandas,使用变量调用函数f时,我想检查var是否为数据帧: def f(var): if var == pd.DataFrame(): print "do stuff" 我想解决办法可能很简单,但即使有 def f(var): if var.values != None: print "do stuff" 我不能让它像预期的那样工作 使用内置的isinstance()函数 import pandas as pd def f(var): if

使用变量调用函数f时,我想检查var是否为数据帧:

def f(var):
    if var == pd.DataFrame():
        print "do stuff"
我想解决办法可能很简单,但即使有

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

我不能让它像预期的那样工作

使用内置的
isinstance()
函数

import pandas as pd

def f(var):
    if isinstance(var, pd.DataFrame):
        print("do stuff")
除此之外,不要使用:

if isinstance(x, pd.DataFrame):
    ... # do something

明确指出,
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
处理继承(请参阅)。例如,它将告诉您一个变量是否是字符串(或者是
str
或者
unicode
),因为它们源自
basestring

专门针对
pandas
DataFrame
对象:

import pandas as pd
isinstance(var, pd.DataFrame)

您的代码显示“如果
var
等于一个空数据帧”。您真正想要的是“如果
var
的类型等于
pd.DataFrame
”类型。您可以检查使用
isinstance
如何将其推广到用户可以使用您定义的功能,但没有
将熊猫导入为pd
,而只是
导入熊猫
?只需对这两种可能性执行
,或者是否有更复杂的问题我不知道?一个潜在的解决方案可能是将import语句放在函数中,这样用户就不可能使用其他方法导入熊猫。为了加快速度(避免为了简单的检查而导入整个panda库),您可以使用类似于
import pandas.DataFrame作为panda\u类型
,然后在内部使用
isinstance(var,panda\u类型)
import pandas as pd
isinstance(var, pd.DataFrame)