【问题标题】:Numbering Groups In Pandas DataFramePandas DataFrame中的编号组
【发布时间】:2016-01-31 08:18:03
【问题描述】:

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

【问题讨论】:

标签: python pandas


【解决方案1】:

正如ajcr 的评论中所建议的,pd.factorize 是要走的路。在您的情况下,您可以添加两列以通过添加两列并在它们之间添加一些分隔符来快速创建一个键数组。分隔符是为了避免混淆对,例如ab, ca, bc,正如DSM 所建议的那样。

df['GroupNumber'] = pd.factorize(df.Column1 + ' ' + df.Column2) 

它仍然比使用pd.lib.fast_zip 更快。

【讨论】:

  • 我想我更喜欢你之前的回答。这会混淆“AB”、“C”和“A”、“BC”。
  • 是的,好点。我过于关注所提供的数据。我已经更新了答案。
猜你喜欢
  • 2016-01-18
  • 1970-01-01
  • 2013-07-20
  • 2017-01-21
  • 1970-01-01
  • 2019-02-06
  • 2014-02-24
  • 2016-08-18
  • 1970-01-01
相关资源
最近更新 更多