我的数据是一样,我想计算NDCG
指标如何在pandas中`groupby`之后按照顺序添加一列?
pid query title label predict prob
0 1 A a 0 2 0.9
1 1 A b 2 0 0.8
2 1 A c 1 2 0.7
3 2 D d 3 1 0.8
4 2 D e 4 2 0.9
后groupby
调度研究
each_pid = data.groupby(data['pid']).apply(lambda g: g.sort_values(['predict', 'prob'], ascending=False))
我得到这样的数据帧。
pid query title label predict prob score
pid
1 0 1 A a 0 2 0.9 6
2 1 A c 1 2 0.7 18
1 1 A b 2 0 0.8 42
2 4 2 D e 4 2 0.9 186
3 2 D d 3 1 0.8 90
现在我不想再列名weight
它的价值是根据每个组如下的顺序。
pid query title label predict prob score weight
pid
1 0 1 A a 0 2 0.9 6 1
2 1 A c 1 2 0.7 18 2
1 1 A b 2 0 0.8 42 3
2 4 2 D e 4 2 0.9 186 1
3 2 D d 3 1 0.8 90 2
而如何才能获得各组的前2项行像
pid query title label predict prob score weight
pid
1 0 1 A a 0 2 0.9 6 1
2 1 A c 1 2 0.7 18 2
2 4 2 D e 4 2 0.9 186 1
3 2 D d 3 1 0.8 90 2
谁能帮助?
编辑。感谢@Akshay Kandul和@Allen的帮助。该代码工作
data = data.groupby(level=0).head(2)
data['weight'] = data.groupby(level=0).cumcount()+1
非常感谢! – danche