Python 检查数据帧是否已传递给函数
我有一个定义如下的函数:Python 检查数据帧是否已传递给函数,python,pandas,python-typing,Python,Pandas,Python Typing,我有一个定义如下的函数: def demand_cleaning(df=None, location, output,_input,tables): 我想测试df是否通过了,df是否是一个数据帧 如果df没有通过,我想做如下事情 if df is None: df = pd.read_pickle(tables + "Demand Raw") 但这项测试现在不起作用。我明白了 ValueError: The truth value of a DataFrame is ambiguou
def demand_cleaning(df=None, location, output,_input,tables):
我想测试df是否通过了,df是否是一个数据帧
如果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().
你可以说:
if df is None:
如果要检查数据帧是否包含数据检查:
if not df.empty:
你可以说:
if df is None:
如果要检查数据帧是否包含数据检查:
if not df.empty:
尝试直接执行类型检查:
if isinstance(df, pandas.DataFrame):
pass
请记住,isinstance的第二个参数取决于您导入的名称空间。这通常是pd,这将产生pd.DataFrame。
查看。尝试直接执行类型检查:
if isinstance(df, pandas.DataFrame):
pass
请记住,isinstance的第二个参数取决于您导入的名称空间。这通常是pd,这将产生pd.DataFrame。
看看。像这样的东西可以:
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
"""
这样做可以:
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
"""
我感觉ValueError不是来自您向我们展示的内容。您知道在更改文件后,您需要在运行之前保存它吗?@GiantsLoveDeathMetal boolpd.DataFrame==无会引发完全相同的ValueError。OP应将其测试更改为df为None。df==None将所有df值与None进行比较,返回布尔值的数据帧。if然后询问bool,但是数据帧的真值是模糊的。我认为他总是传递一个数据帧,所以他需要做的是检查df.empty:@GiantsLoveDeathMetal是否为函数的可选参数,它可以是None。我确实觉得奇怪的是,这个函数签名没有给出语法错误:非默认参数跟在默认参数后面。我感觉ValueError不是来自您向我们展示的内容。您知道在更改文件之后,运行前需要保存吗?@GiantsLoveDeathMetal boolpd.DataFrame==None将引发完全相同的值错误。OP应将其测试更改为df为None。df==None将所有df值与None进行比较,返回布尔值的数据帧。if然后询问bool,但是数据帧的真值是模糊的。我认为他总是传递一个数据帧,所以他需要做的是检查df.empty:@GiantsLoveDeathMetal是否为函数的可选参数,它可以是None。我确实觉得奇怪的是,这个函数签名没有给出一个SyntaxError:如果df为None,则非默认参数跟在默认参数后面。如果我尝试,则df为None:但传递一个数据帧,我会得到以下消息ValueError:数据帧的真值不明确。使用a.empty、a.bool、a.item、a.any或a.all。@Nicolas使用is代替==…@Nicolas你不可能得到该值。你忘了按Ctrl+s键并保存代码。如果我尝试如果df为None:但传递一个数据帧,我会得到以下消息ValueError:数据帧的真值不明确。使用a.empty、a.bool、a.item、a.any或a.all。@Nicolas使用is代替==…@Nicolas你不可能得到该值Error你忘了按Ctrl+s键并保存代码。如果~isinstancedf,pd.DataFrame:但get ValueError:DataFrame的真值不明确,我会这样做。使用a.empty、a.bool、a.item、a.any或a.all。是的,你没有帮助处理这个重复的错误消息,请向我们显示完整的回溯-请参阅@Jon Clements♦ 注释这就是我得到的结果~isinstanced,pd.DataFrame Out[62]:-2我想这在if中是不可能的。为什么~不返回false?如果~isinstancedf,pd.DataFrame:但得到值错误:DataFrame的真值不明确,我会尝试此方法。使用a.empty、a.bool、a.item、a.any或a.all。是的,你没有帮助处理这个重复的错误消息,请向我们显示完整的回溯-请参阅@Jon Clements♦ 注释这就是我得到的结果~isinstanced,pd.DataFrame Out[62]:-2我想这在if中是不可能的。为什么~不回馈虚假?