检查变量是否为dataframe

时间:2013-02-11 09:10:08

标签: python pandas

当我用变量调用函数f时我想检查var是否是pandas数据帧:

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

我想解决方案可能很简单,但即使是

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

我无法让它按预期工作。

2 个答案:

答案 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()?)。例如,它会告诉您变量是否为字符串(strunicode),因为它们来自basestring

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

专门用于pandas DataFrame个对象:

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