我有一个索引中带有重复值的DataFrame。我想将此数据集过滤,只显示每个索引的一个实例,方法是选择索引中不同列中最大值对应的行。例如,我的DataFrame如下所示:
df:
df:
Product ID Store Sales
1 A 50
1 B 200
1 C 20
2 A 400
2 B 10
3 A 200
4 A 50
4 B 100
4 C 500
我想把这些数据过滤成这样:
df2:
Product ID Store Sales
1 B 200
2 A 400
3 A 200
4 C 500
任何关于如何在pandas中最好地解决这个问题的想法?非常感谢您的时间。
df.iloc[df.groupby('Product ID')['Sales'].idxmax().values.ravel()]
- TomAugspurgerdrop_duplicates
,我最初使用的是transform
,但使用agg
也可以,并且不需要删除重复项。我会更新我的答案。 - EdChumtransform
时,它试图将结果与原始 df 对齐,因此重复索引值,因为每个 'Product ID' 都有多个 'Store' 行,这就是为什么我需要drop_duplicates
,但我意识到这是不必要的,因为使用idxmax
的聚合函数可以很好地工作。 - EdChum