列的Python百分等级,由其他多个列分组

时间:2019-05-17 10:24:50

标签: python pandas percentile

我想按多个字段(“日期”和“类别”)对熊猫数据框进行分组,并为每个组按百分比对另一个字段的值(“值”)进行排序,同时保留原始字段(“值” )字段。

我尝试过:

df2 = df.groupby(['date', 'category'])['value'].rank(pct=True)

但这只会返回“值”字段的百分位。

1 个答案:

答案 0 :(得分:1)

我相信您需要将Series分配到新列:

df = pd.DataFrame({
         'value':[1,3,5,7,1,0],
         'category':[5] * 6,
         'date':list('aaabbb')
})


df['new'] = df.groupby(['date', 'category'])['value'].rank(pct=True)
print (df)
   value  category date       new
0      1         5    a  0.333333
1      3         5    a  0.666667
2      5         5    a  1.000000
3      7         5    b  1.000000
4      1         5    b  0.666667
5      0         5    b  0.333333

替代DataFrame.assign

df = df.assign(new= df.groupby(['date', 'category'])['value'].rank(pct=True))