我想按多个字段(“日期”和“类别”)对熊猫数据框进行分组,并为每个组按百分比对另一个字段的值(“值”)进行排序,同时保留原始字段(“值” )字段。
我尝试过:
df2 = df.groupby(['date', 'category'])['value'].rank(pct=True)
但这只会返回“值”字段的百分位。
答案 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
df = df.assign(new= df.groupby(['date', 'category'])['value'].rank(pct=True))