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]})
答案 0 :(得分:2)
您可以使用rank
标识method
arg设置为dense
且接受string
值的唯一群组:
df['GrpIdx'] = df['Grp'].rank(method='dense').astype(int)