gpt4 book ai didi

python - 在多个条件下从数据框中过滤行,获取 ValueError

转载 作者:太空宇宙 更新时间:2023-11-03 10:55:41 25 4
gpt4 key购买 nike

我正在根据多个条件从名为 joined 的数据框中过滤我的行:

joined[(joined.gvkey_x==gvkey) & (year-3<=joined.year_y<=year )]

我想要数据框中满足给定条件的所有行。我返回了这个错误:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()

我正在阅读 this answer其中指出我应该使用 .any()/.all() 但这并不十分清楚。

有人可以向我解释我应该如何应用多个条件以及在我的操作 (&) 中 a.any() 或 a.all() 的目的和用途究竟是什么。

最佳答案

你可以使用 query

joined.query('gvkey_x == @gvkey & @year - 3 <= year_y <= @year')

演示

year = 2002
gvkey = 12345

joined = pd.DataFrame(dict(
gvkey_x=[12343] * 6 + [12345] * 6 + [12346] * 6,
year_y=list(range(2000, 2006)) * 3
))
print(joined)

gvkey_x year_y
0 12343 2000
1 12343 2001
2 12343 2002
3 12343 2003
4 12343 2004
5 12343 2005
6 12345 2000
7 12345 2001
8 12345 2002
9 12345 2003
10 12345 2004
11 12345 2005
12 12346 2000
13 12346 2001
14 12346 2002
15 12346 2003
16 12346 2004
17 12346 2005

print(joined.query('gvkey_x == @gvkey & @year - 3 <= year_y <= @year'))

gvkey_x year_y
6 12345 2000
7 12345 2001
8 12345 2002

您收到错误的原因是 (year-3<=joined.year_y<=year )
pandas需要分别评估每个比较。

正如@Psidom 在评论中建议的那样:

(joined.year_y >= year-3) & (joined.year_y <= year)

会修复它。

关于python - 在多个条件下从数据框中过滤行,获取 ValueError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41365606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com