Pandas 多索引数据框获取每个排序组的前 5 行

李仁德*_*李仁德 1 python sorting group-by dataframe pandas

我有一个多索引数据帧,如下所示:

在此处输入图片说明

我想对每个海报组(降序)进行排序并获得前 5 名。如果发帖数少于5,则删除记录。

Max*_*axU 5

假设您有以下 DF:

In [97]: df
Out[97]:
               Time
waller poster
1      11         2
       22         3
       33         1
       44         1
       55         1
2      33         1
3      11         1
       22         1
       33         1
       44         2
       55         1
       66         3
Run Code Online (Sandbox Code Playgroud)

解决方案:

In [98]: (df.sort_index(ascending=[1,0])
    ...:    .groupby(level=0, as_index=False)
    ...:    .apply(lambda x: x.head(5) if len(x) >= 5 else x.head(0))
    ...:    .reset_index(level=0, drop=True)
    ...: )
    ...:
Out[98]:
               Time
waller poster
1      55         1
       44         1
       33         1
       22         3
       11         2
3      66         3
       55         1
       44         2
       33         1
       22         1
Run Code Online (Sandbox Code Playgroud)