use*_*562 1 python group-by pandas pandas-groupby
我在R中看到了解决方案但在python中没有看到.如果问题重复,请指出我之前提出的问题/解决方案.
我有一个数据帧如下.
df = pd.DataFrame({'col1': ['a','b','c','c','d','e','a','h','i','a'],'col2':['3:00','3:00','4:00','4:00','3:00','5:00','5:00','3:00','3:00','2:00']})
df
Out[83]:
col1 col2
0 a 3:00
1 b 3:00
2 c 4:00
3 c 4:00
4 d 3:00
5 e 5:00
6 a 5:00
7 h 3:00
8 i 3:00
9 a 2:00
Run Code Online (Sandbox Code Playgroud)
我想做的是groupby'col1'并为col2中的不同值分配一个唯一的ID,如下所示:
col1 col2 ID
a 2:00 0
a 3:00 1
a 5:00 2
b 3:00 0
c 4:00 0
c 4:00 0
...
Run Code Online (Sandbox Code Playgroud)
我尝试使用pd.Categorical,但不能完全达到我想要的位置.非常感谢任何帮助.谢谢.
我们可以使用pd.factorize()方法:
In [170]: df['ID'] = df.groupby('col1')['col2'].transform(lambda x: pd.factorize(x)[0])
In [171]: df
Out[171]:
col1 col2 ID
0 a 3:00 0
1 b 3:00 0
2 c 4:00 0
3 c 4:00 0
4 d 3:00 0
5 e 5:00 0
6 a 5:00 1
7 h 3:00 0
8 i 3:00 0
9 a 2:00 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1481 次 |
| 最近记录: |