在Pandas DataFrame中编号组

时间:2015-10-30 19:52:29

标签: python pandas

Pandas是否有办法根据列值对DataFrame中的组进行编号?如果我的框架看起来像这样

  Column1 Column2  Column3
0       A       X       23
1       A       X       45
2       A       Y       32
3       A       Y       53
4       A       Y       67
5       B       X       85
6       B       Y       12
7       B       Y       94

我希望能够做的事情就像

df.group_numbers(['Column1', 'Column2'])

  Column1 Column2  Column3  GroupNumber
0       A       X       23            1
1       A       X       45            1
2       A       Y       32            2
3       A       Y       53            2
4       A       Y       67            2
5       B       X       85            3    
6       B       Y       12            4
7       B       Y       94            4

1 个答案:

答案 0 :(得分:1)

根据ajcr的评论中的建议,pd.factorize是可行的方法。在您的情况下,您可以添加两列以快速创建一个键数组,方法是添加两个列之间的分隔符。分隔符是为了避免ab, ca, bc建议DSMdf['GroupNumber'] = pd.factorize(df.Column1 + ' ' + df.Column2) 混淆。

pd.lib.fast_zip

它仍然比使用{{1}}更快。