检查变量是否为数据帧

发布于 2021-01-29 18:22:32

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

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

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

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

我无法使其按预期工作。

关注者
0
被浏览
52
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看