If-else ValueError Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()
Posted
技术标签:
【中文标题】If-else ValueError Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()【英文标题】:If-else ValueError The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all() 【发布时间】:2019-12-11 14:25:26 【问题描述】:我正在尝试使用 if-else 条件填充缺失值,但出现值错误 我该如何解决? 我阅读了另一篇类似的帖子,但不适用于我的问题
我已经尝试过 if-else(值错误),并且还使用 for 循环遍历索引
使用for循环时,它只通过if语句运行所有行,而不是else
只有 if else 语句(值错误)
if data['Waiting Time'] > 0:
data['Existing_Date'].fillna(data['New_time'],inplace=True) #if wait_time > 0
else:
data['Existing_Date'].fillna(data['Actual Date'],inplace=True) #if wait_time > 0
使用 For 循环索引(只运行 if 语句)
for i in data.index:
if data['Waiting Time'].iloc[i] > 0:
data['Existing_Date'].fillna(data['New_time'],inplace=True) #if wait_time > 0
else:
data['Existing_Date'].fillna(data['Actual Date'],inplace=True) #if wait_time = 0
与if only语句的值错误
带有for循环:只产生if语句,不去else语句
我该如何解决这个问题?谢谢
【问题讨论】:
您介意分享错误的 TraceBack 吗? 您能否举一个小例子说明data
之前的样子,以及之后应该如何改变?
@KarlKnechtel data['Exisitng_Date'] 列有缺失值 如果 df(等待时间 - 相等行有整数)大于 0,我想用 New_time 列填充,否则实际日期 coumn 类型为日期时间64
***.com/questions/27041724/… 有帮助吗?
【参考方案1】:
第一个代码没有输入else:
的原因是因为你正在测试整个dataframe,它会返回True
存在。您实际上并没有查询满足条件的值。
您获得ValueError
的原因是因为您同时测试多个值(整个值数组),在这种情况下您可能会获得多个True
和多个False
。
我不建议像您那样循环访问dataframe
。您可以使用loc
和一些逻辑。这实际上取决于您正在寻找的确切输出,但pandas
可能已经有工具供您使用,而无需遍历dataframe
data.loc[data['Waiting Time'] > 0,'Existing_Date'].fillna(data['New_time'],inplace=True)
data.loc[data['Waiting Time'] <= 0,'Existing_Date'].fillna(data['Actual Date'],inplace=True)
【讨论】:
我试过了,它在运行后显示缺失字段中的“NaT”值 您的数据是datetime
还是 str
?根据文档:对于 datetime64[ns] 类型,NaT 表示缺失值。这是一个伪原生标记值,可以由 NumPy 以单一 dtype (datetime64[ns]) 表示。 pandas 对象提供 NaT 和 NaN 之间的兼容性。以上是关于If-else ValueError Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()的主要内容,如果未能解决你的问题,请参考以下文章
ValueError:无法强制转换为 Series,长度必须为 1:给定 n
ValueError: Series 的真值不明确(API NaN 处理)
将 Pandas 列传递给函数时出现“ValueError:Series 的真值不明确”
ValueError:在将 lambda 与 loc 一起使用时,Series 的真值不明确 [重复]
为啥我会收到 ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()
ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。 & [复制]