gpt4 book ai didi

python - 如何在 Pandas Python 中按 id 对行进行排名

转载 作者:行者123 更新时间:2023-11-28 20:56:56 26 4
gpt4 key购买 nike

我有一个这样的数据框:

id     points1    points2
1 44 53
1 76 34
1 63 66
2 23 34
2 44 56

我想要这样的输出:

id     points1    points2     points1_rank     points2_rank
1 44 53 3 2
1 76 34 1 3
1 63 66 2 1
2 23 79 2 1
2 44 56 1 2

基本上,我想groupby('id'),并找到具有相同id 的每一列的排名。

我试过这个:

features = ["points1","points2"]
df = pd.merge(df, df.groupby('id')[features].rank().reset_index(), suffixes=["", "_rank"], how='left', on=['id'])

但是我得到 keyerror 'id'

最佳答案

您需要在 rank 中使用 ascending=False

df.join(df.groupby('id')['points1', 'points2'].rank(ascending=False).astype(int).add_suffix('_rank'))


+---+----+---------+---------+--------------+--------------+
| | id | points1 | points2 | points1_rank | points2_rank |
+---+----+---------+---------+--------------+--------------+
| 0 | 1 | 44 | 53 | 3 | 2 |
| 1 | 1 | 76 | 34 | 1 | 3 |
| 2 | 1 | 63 | 66 | 2 | 1 |
| 3 | 2 | 23 | 34 | 2 | 2 |
| 4 | 2 | 44 | 56 | 1 | 1 |
+---+----+---------+---------+--------------+--------------+

关于python - 如何在 Pandas Python 中按 id 对行进行排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54017968/

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