小编典典

检查变量是否是数据框

all

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

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

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

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

我无法让它像预期的那样工作。


阅读 69

收藏
2022-06-30

共1个答案

小编典典

使用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()
之间的区别是什么?
)。例如,它会告诉您变量是否为字符串(strunicode),因为它们派生自basestring)

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

专门针对pandas DataFrame对象:

import pandas as pd
isinstance(var, pd.DataFrame)
2022-06-30