gpt4 book ai didi

python - 如何比较 pandas 数据框中的行子集

转载 作者:行者123 更新时间:2023-11-30 22:00:05 25 4
gpt4 key购买 nike

我有一个巨大的 pandas 数据框,如下所示:

id        type        price         min           max

1 ch 10 10 100
1 fo 8 20 100
1 dr 7 10 90
1 ad 5 16 20
1 dr 6 10 90
1 fo 4 20 100
2 ch 5 40 50
2 fo 3 10 50
2 ch 3 40 50
... ... ... ... ...

我想添加一个新列“match”以获得这样的内容:

id         type         price       min           max     match

1 ch 10 10 100 false
1 fo 8 20 100 false
1 dr 7 10 90 false
1 ad 5 16 20 false
1 dr 6 10 90 true
1 fo 4 20 100 true
2 ch 5 40 50 false
2 fo 3 10 50 false
2 ch 3 40 50 true
... ... ... ... ... ...

我尝试使用shift:

 df['match']=np.where((df['id'] == df['id'].shift()) & (df['type'] == df['type'].shift()) & (df['min'] == df['min'].shift()) & (df['max'] == df['max'].shift()),true, false)

但这只是将当前行与前一行进行比较。没有特定的模式来确定与条件匹配的前一行的数量。我想选择 id 作为比较行的窗口。有办法做到这一点吗?

任何建议都将受到高度赞赏。

谢谢

最佳答案

您可以使用duplicated指定要考虑的列的子集:

df.assign(match=df.duplicated(subset=['id', 'type', 'min', 'max']))

id type price min max match
0 1 ch 10 10 100 False
1 1 fo 8 20 100 False
2 1 dr 7 10 90 False
3 1 ad 5 16 20 False
4 1 dr 6 10 90 True
5 1 fo 4 20 100 True
6 2 ch 5 40 50 False
7 2 fo 3 10 50 False
8 2 ch 3 40 50 True

关于python - 如何比较 pandas 数据框中的行子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54423144/

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