Python 在groupby之后为组中的每个唯一值分配唯一ID
我在R中看到了解决方案,但在python中没有看到。如果问题重复,请向我指出之前提出的问题/解决方案 我有一个如下的数据帧Python 在groupby之后为组中的每个唯一值分配唯一ID,python,pandas,group-by,pandas-groupby,Python,Pandas,Group By,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:0
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
我想做的是按“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
...
我试着使用pd.Categorial,但无法达到我想要的程度。
非常感谢您的帮助。谢谢。我们可以使用以下方法:
@用户4279562,很高兴它有帮助:)@MaxU-不要比较,它会正确返回不同的输出。顺便说一句,答案很好,更多的时候使用它+1:)@MaxU-是的,我注意到你回答了一些关于这个的答案。。好主意。@MaxU啊,对不起,有一堆类似的问答没有链接,我链接得太过火了。删除了我所有的评论。祝ML好运!
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