检查变量是否是数据框

新手上路,请多包涵

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

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

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

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

我无法让它按预期工作。

原文由 trbck 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 305
2 个回答

使用 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)

原文由 Jakub M. 发布,翻译遵循 CC BY-SA 4.0 许可协议

使用内置的 isinstance() 函数。

 import pandas as pd

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

原文由 Rutger Kassies 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题