我有一个大型的多索引数据框,其中包含约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年以其各自的值输出苹果和水。
答案 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