有没有办法找到一个组中前n个元素的位置

时间:2019-05-02 14:51:22

标签: python-3.x pandas-groupby

需要提取熊猫数据框的前n个元素的属性

输入数据如下

model.summary()

...

我需要排在前两名,

    KEY variable    value
0   1   A   0.476970
101 1   B   0.513333
202 1   C   0.376970
203 2   B   0.5667
101 2   A   0.513333
202 2   C   0.376970

我尝试的代码如下

KEY variable    value
1   A   0.476970
1   B   0.513333
2   B   0.5667
2   A   0.513333
...

这给了我

test=pred_melt.groupby(['KEY'])['value'].nlargest(2)

想法是与具有索引(101,0等)的原图联接以添加变量列,但无法从上面的索引中获得所需的输出。 不是按列分组是键而不是变量。

1 个答案:

答案 0 :(得分:0)

感谢Supratim,是的,但我添加了我必须锻炼的其他细节。如果需要,请发表评论。

test=pred_melt.groupby(['KEY'])['value'].nlargest(2)
test.index

返回MultiIndex 按照 https://pandas.pydata.org/pandas-docs/stable/user_guide/advanced.html 结构是

 MultiIndex(levels=[...], [...]],
            codes=[[...], [..]],
            names=[...])

我对

感兴趣
test.index.levels[1]

这是我的第二栏

KEY     
1          101    0.513333
           0      0.476970
...
Name: value, Length: 198, dtype: float64

为0,101等,可用于从pred_melt获取记录

    KEY variable    value
0   1   A   0.476970
101 1   B   0.513333
202 1   C   0.376970
203 2   B   0.5667
101 2   A   0.513333
202 2   C   0.376970

pred_melt.iloc[test.index.levels[1]]