如何使用pandas创建组ID

时间:2016-09-23 16:20:29

标签: python r pandas dataframe

R的data.table包有一个非常方便的.GRP方法来生成组索引值。

library(data.table)
dt <- data.table(
  Grp=c("a", "z", "a", "f", "f"),
  Val=c(3, 2, 1, 2, 2)
)
dt[, GrpIdx := .GRP, by=Grp]

   Grp Val GrpIdx
1:   a   3      1
2:   z   2      2
3:   a   1      1
4:   f   2      3
5:   f   2      3

使用pandas完成相同操作的最佳方式是什么?

import pandas as pd
df = pd.DataFrame({'Grp':["a", "z", "a", "f", "f"], 'Val':[3, 2, 1, 2, 2]})

1 个答案:

答案 0 :(得分:2)

您可以使用rank标识method arg设置为dense且接受string值的唯一群组:

df['GrpIdx'] = df['Grp'].rank(method='dense').astype(int)

Image