使用 groupby() 时,如何使用包含组号索引的新列创建 DataFrame,类似于 dplyr::group_indices
在 R 中。例如,如果我有
>>> df=pd.DataFrame({'a':[1,1,1,2,2,2],'b':[1,1,2,1,1,2]})
>>> df
a b
0 1 1
1 1 1
2 1 2
3 2 1
4 2 1
5 2 2
我怎样才能得到像
a b idx
0 1 1 1
1 1 1 1
2 1 2 2
3 2 1 3
4 2 1 3
5 2 2 4
( idx
索引的顺序无关紧要)
原文由 user2667066 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是使用
drop_duplicates
和merge
获取唯一标识符的简洁方法。在这种情况下,标识符变为 0,2,3,5(只是原始索引的残差),但这可以很容易地更改为 0,1,2,3 和附加的
reset_index(drop=True)
。更新: 较新版本的熊猫 (0.20.2) 提供了一种更简单的方法来使用
ngroup
方法,如@Constantino 对上述问题的评论和@CalumYou 的后续回答所述。我将把它留在这里作为替代方法,但ngroup
在大多数情况下似乎是更好的方法。