首页 > 解决方案 > 如何获取熊猫中多个组的列值的顺序位置

问题描述

你能帮我找到一个问题的答案吗?我有一个数据框,其中包含用户的 ID 和操作编号。这些数字没有严格的顺序,有些值被遗漏了。像这样的东西:

print(df)

    id  action
0   2039    12
1   2039    24
2   2039    6
3   2039    42
4   2031    11
5   2031    7
6   2031    22
7   2031    23
8   2032    3
9   2032    4
10  2032    6
11  3032    77

而且我需要为每个用户一个接一个地获得一个订单postiton。像这样:

      id    action  order_posotion
0   2039    12  2
1   2039    24  3
2   2039    6   1
3   2039    42  4
4   2031    11  2
5   2031    7   1
6   2031    22  3
7   2031    23  4
8   2032    3   1
9   2032    4   2
10  2032    6   3
11  3032    77  4

我怎样才能做到这一点?将感谢任何帮助。

标签: pythonpandasdata-analysis

解决方案


使用groupby.rank

df['order position']=df.groupby('id').action.rank()

或者

df['order position']=df.sort_values('action').groupby('id').id.cumcount()+1

输出df

      id  action  order position
0   2039      12               2
1   2039      24               3
2   2039       6               1
3   2039      42               4
4   2031      11               2
5   2031       7               1
6   2031      22               3
7   2031      23               4
8   2032       3               1
9   2032       4               2
10  2032       6               3
11  3032      77               1

推荐阅读