【发布时间】:2018-01-11 15:12:23
【问题描述】:
我知道以前有人问过这个问题,但是,当我尝试执行 if 语句时,我遇到了错误。我看了这个 link ,但对我的情况没有多大帮助。我的dfs 是一个数据框列表。
我正在尝试以下方法,
for i in dfs:
if (i['var1'] < 3.000):
print(i)
给出以下错误:
ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。
并且我尝试了以下操作并得到了同样的错误。
for i,j in enumerate(dfs):
if (j['var1'] < 3.000):
print(i)
我的var1 数据类型是float32。我没有使用任何其他logical 运算符和& 或|。在上面的链接中,这似乎是因为使用了逻辑运算符。为什么我会收到ValueError?
【问题讨论】:
-
if什么时候应该是真的?从那一刻起,至少有一个这样的行?还是从那一刻起所有值都小于 3? -
@i.n.n.m,您是否意识到您的比较与
[1,2,3,4,5] > 2非常相似?你期待什么结果? -
@i.n.n.m
i是一个数据框,所以i['var1']是一个系列。正如@MaxU 所说,这相当于将系列中的每个元素与您的值进行比较,例如[1 < 3, 2 < 3, 3 < 3, 4 < 3, 5 < 3]。结果是一个形状相同的系列,每次比较的结果,[True, True, False, False, False] -
@i.n.n.m 与您使用的条款和我们看到的结果脱节。除非您通过向我们展示数据、您的代码以及您想要获得的内容来帮助我们,否则我们无法调和这些差异。这是提供最小、完整和可验证示例的精神或MCVE
-
@i.n.n.m,我很确定您在尝试显示所需的数据集时会自己发现它;-) 请听 piRSquared - 这将节省您和我们的时间。请阅读how to make good reproducible pandas examples