当这样做时:
import pandas as pd
df = pd.DataFrame({'A': ['1.0', '1.1', '1.2', '1.3'], 'B': ['a', 'b', 'c', 'd']})
row1 = df[df['A'] == '1.1']
if row1['B'] == 'b':
print('hello')
我们得到:
ValueError:系列的真值是不明确的。使用a.empty、a.bool()、a.item()、a.any()或a.all()。
为什么是模棱两可的?
如果我使用any()
或all()
,确实可以解决这个问题,但在这里,我不太愿意添加any
或all
,而不完全理解为什么需要添加。通常,当我们有一个布尔值列表时,any
或all
是必需的,但是这里只有一个这样的布尔值。
TL;DR:如何用Pandas测试一个数据的相等值?
发布于 2021-03-08 04:56:45
我想你可以检查一下这
熊猫遵循NumPy的惯例,当你试图将某物转化为嘘声时,就会产生错误。这种情况发生在if-语句或使用布尔操作时: and,或,而不是.以下代码的结果尚不清楚:
if pd.Series([False, True, False]):
pass
它应该是真因为它不是零长度,或假因为有假值?目前还不清楚,因此,熊猫反而会饲养一只ValueError:
if pd.Series([False, True, False]):
print("I was true")
回溯
ValueError:数组的真值是不明确的。使用a.empty、a.any()或a.all()。
您需要显式地选择您想要对DataFrame做什么,例如使用any()、all()或空()。或者,如果熊猫对象为None,您可能需要比较:
if pd.Series([False, True, False]) is not None:
print("I was not None")
我不是一个人
下面是如何检查其中任何一个值是否为True:
if pd.Series([False, True, False]).any():
print("I am any")
I am any
要在布尔上下文中计算单元素熊猫对象,请使用bool()方法:
pd.Series([True]).bool()
True
pd.Series([False]).bool()
False
pd.DataFrame([[True]]).bool()
True
pd.DataFrame([[False]]).bool()
False
https://stackoverflow.com/questions/66530235
复制相似问题