我有一个像这样定义的函数:
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().
答案 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
"""