我希望我能为我的问题找到帮助 . 我正在寻找以下问题的解决方案:
我有一个dataFrame,如:
Sp Mt Value count
0 MM1 S1 a **3**
1 MM1 S1 n 2
2 MM1 S3 cb 5
3 MM2 S3 mk **8**
4 MM2 S4 bg **10**
5 MM2 S4 dgd 1
6 MM4 S2 rd 2
7 MM4 S2 cb 2
8 MM4 S2 uyi **7**
我的目标是获取组之间计数最大的结果行,例如:
0 MM1 S1 a **3**
1 3 MM2 S3 mk **8**
4 MM2 S4 bg **10**
8 MM4 S2 uyi **7**
有人知道我怎么能在熊猫或python中做到这一点?
UPDATE
我没有提供更多关于我的问题的细节 . 对于我的问题,我想按['Sp','Mt'分组 . 让我们举个第二个例子:
Sp Mt Value count
4 MM2 S4 bg 10
5 MM2 S4 dgd 1
6 MM4 S2 rd 2
7 MM4 S2 cb 8
8 MM4 S2 uyi 8
对于上面的例子,我想得到每个组中count等于max的所有行,例如:
MM2 S4 bg 10
MM4 S2 cb 8
MM4 S2 uyi 8
7 回答
简单的解决方案是应用: idxmax() function to get indices of rows with max values. 这将过滤掉组中具有最大值的所有行 .
您可以按计数对dataFrame进行排序,然后删除重复项 . 我认为这更容易:
对我来说,最简单的解决方案是在count等于最大值时保持值 . 因此,以下一行命令就足够了:
要获得原始DF的索引,您可以执行以下操作:
请注意,如果每个组有多个最大值,则将返回所有值 .
Update
关于这是OP要求的冰雹机会:
尝试了Zelazny在一个相对较大的DataFrame(约400k行)上建议的解决方案后,我发现它非常慢 . 我发现这是一种替代方案,可以在我的数据集上更快地运行数量级 .
使用
groupby
和idxmax
方法:date
转移到datetime
:在
groupyby ad_id
之后date
的max
的索引:出[54]: