1

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

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

我想测试是否df通过(df是熊猫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().
4

3 回答 3

5

你可以说:

if df is None:

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

if not df.empty:
于 2017-09-15T09:43:31.817 回答
3

尝试直接执行类型检查:

if isinstance(df, pandas.DataFrame):
    pass

请记住,第二个参数isinstance取决于您将 pandas 导入的命名空间。这通常是pd,这将屈服于pd.DataFrame。看看这篇文章

于 2017-09-15T09:50:15.180 回答
3

这样的事情会做:

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
"""
于 2017-09-15T09:53:51.083 回答