检查pandas数据帧是否已传递给函数

时间:2017-09-15 09:41:34

标签: python pandas

我有一个像这样定义的函数:

def demand_cleaning(df=None, location, output,_input,tables):

我想测试是否已通过dfdf是大熊猫DataFrame

如果未通过df,我想做类似

的事情
if df is None:
    df = pd.read_pickle(tables + "Demand Raw")

但是这个测试现在不起作用了。我得到了这个

ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

3 个答案:

答案 0 :(得分:3)

你可以说:

if df is None:

如果要检查数据帧是否包含数据检查:

if not df.empty:

答案 1 :(得分:2)

尝试直接执行类型检查:

if isinstance(df, pandas.DataFrame):
    pass

请记住,isinstance的第二个参数取决于您导入pandas的命名空间。通常为pd,这将产生pd.DataFrame。 看看this article

答案 2 :(得分:1)

这样的事情可以做到:

def g(var):
    if isinstance(var, pd.DataFrame):
        print("good to go")
    else:
        print("Nah!")
        print(type(var))

a = None 

b = pd.DataFrame()

print(g(a))

"""
output>>> 

Nah!
<type 'NoneType'>
"""

print(g(b))

"""
output>>> 

good to go
"""