python - 在 Python 列中查找最大值

标签 python pandas group-by pandas-groupby

我在 pandas python 中有一个像这样的数据框 (combined_ranking_df):

                Id  Rank                         Activity
0              14035   8.0                         deployed
1              47728   8.0                         deployed
2              24259   1.0                         NaN
3              24259   6.0                         WIP
4              14251   8.0                         deployed
5              14250   1.0                         NaN
6              14250   6.0                         WIP
7              14250   5.0                         NaN
8              14250   5.0                         NaN
9              14250   1.0                         NaN

我正在尝试获取每个 ID 的最大值。例如,14250 应该是 6.0。 24259 应该是 6.0。

                Id  Rank                         Activity
0              14035   8.0                         deployed
1              47728   8.0                         deployed
3              24259   6.0                         WIP
4              14251   8.0                         deployed
6              14250   6.0                         WIP

我尝试做 combined_ranking_df.groupby(['Id'], sort=False)['Rank'].max() 但我得到的结果是第一个 dataframe(没有改变)。

我做错了什么?

最佳答案

选项 1
与@ayhan 的回答相同 here
这通过对每个 'Id' 组的最后位置留下最大值的数据帧进行排序来回答问题。 pd.DataFrame.drop_duplicates 使我们能够保留每个组的第一个或最后一个。然而,这是一个得心应手的巧合,速度非常快。它并不能一概而论地说出每个 'Id' 的前两个。

df.sort_values('Rank').drop_duplicates('Id', 'last')

      Id  Rank  Activity
3  24259   6.0       WIP
6  14250   6.0       WIP
0  14035   8.0  deployed
1  47728   8.0  deployed
4  14251   8.0  deployed

可以在最后对索引进行排序

df.sort_values('Rank').drop_duplicates('Id', 'last').sort_index()

      Id  Rank  Activity
0  14035   8.0  deployed
1  47728   8.0  deployed
3  24259   6.0       WIP
4  14251   8.0  deployed
6  14250   6.0       WIP

选项 2
groupbyidxmax
这是我认为解决这个问题的最惯用的方法。 @MaxU 的答案是将每个 'Id' 归纳为最大的 n 的最佳方式。

df.loc[df.groupby('Id', sort=False).Rank.idxmax()]

      Id  Rank  Activity
0  14035   8.0  deployed
1  47728   8.0  deployed
3  24259   6.0       WIP
4  14251   8.0  deployed
6  14250   6.0       WIP

关于python - 在 Python 列中查找最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45064130/

相关文章:

python - 更新 Python 以用于 AWS CLI

python - 迭代多个response.get API的项目列表

python - DataFrame 对象没有属性 'sort_values'

mysql 如何按日和月查询数据库表并生成总计

mysql - 我可以在不进行自加入的情况下获取群组的最长日期吗?

r - 计算除当前组以外的所有组的平均值

python - 使用 Theano 进行线性回归 - 维度不匹配

python - 在 Python 中根据已排序的词汇表有效匹配单词

python - pandas分布表按所有列分组

python - 在 pandas 数据框中连接多索引信息