Skip to main content
 首页 » 编程设计

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

2025年05月04日24yjmyzz

我有一个如下所示的多索引 DataFrame:

我想对每个海报组进行排序(降序)并获得前 5 名。发帖人少于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 

解决方案:

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