熊猫从MultiIndex中的每个组返回前N个

时间:2018-08-22 18:22:33

标签: pandas sorting dataframe multi-index

我有一个大型的多索引数据框,其中包含约300万个数据点。第一个索引是日期,第二个索引是对象的名称。然后,每个对象都有一个像这样的值:

df = pd.DataFrame({'year': [2012, 2012, 2012, 2013, 2013, 2013],
'item':['apples', 'metals', 'water', 'apples', 'metals', 'water'],
'value': [10, 14, 16, 17, 13, 14]})

df.set_index(['year', 'item'], inplace = True)

这是我正在使用的数据框的一个较小示例。我想返回一个数据框,该数据框保持完全相同的格式,但每年只有前两个值。

因此,最终数据框应以其原始值的格式输出2012年以来的金属和水及其价值,以及2013年以其各自的值输出苹果和水。

2 个答案:

答案 0 :(得分:3)

IIUC PostsDecorator.new(posts).visible_comments sort_values groupby之前

tail

答案 1 :(得分:2)

应用nlargest

pd.concat([d.nlargest(2, columns=['value']) for _, d in df.groupby('year')])

             value
year item         
2012 water      16
     metals     14
2013 apples     17
     water      14