python - 如何获取熊猫中多个组的列值的顺序位置
问题描述
你能帮我找到一个问题的答案吗?我有一个数据框,其中包含用户的 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
我怎样才能做到这一点?将感谢任何帮助。
解决方案
使用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
推荐阅读
- reactjs - 数组的 setState 元素重写整个数组
- java - Gremlin:如何在有向无环图中有效地找到“根”?
- security - 离线 OTP 系统真的安全吗?
- android - 插入列错误(SQLite Android Studio)
- css - 我是否需要为此布局使用绝对 CSS 定位,还是可以通过 CSS Grid 简单地实现?
- python - 从字典列表中提取数据
- typescript - 如何获取与 Typescript 中的接口匹配的对象的所有属性?
- javascript - Firebase Firestore 不保存数组数据
- python - 函数 Output_Assignment_Variable
- javascript - 如何为 getData() 响应提供嵌套的 JSON 数据?