【问题标题】:Extracting the head of a group based on MultiIndex in a pandas DataFrame根据 Pandas DataFrame 中的 MultiIndex 提取组的头部
【发布时间】:2019-10-18 02:27:54
【问题描述】:

我找到了this question,它演示了如何根据MultiIndex 的第一级对DataFrame 进行排序。所以一个初始的 DataFrame 看起来像

l = [[1,'A',99],[1,'B',102],[1,'C',105],[1,'D',97],[2,'A',19],[2,'B',14],[2,'C',10],[2,'D',17]]
df = pd.DataFrame(l,columns = ['idx1','idx2','col1'])
df.set_index(['idx1','idx2'],inplace=True)

# assume data has been received like this...
print df

           col1
idx1 idx2      
1    A       99
     B      102
     C      105
     D       97
2    A       19
     B       14
     C       10
     D       17

可以在每个level=1组内排序产生:

           col1
idx1 idx2      
1    C      105
     B      102
     A       99
     D       97

2    A       19
     D       17
     B       14
     C       10

我的问题是:如何根据第一级提取每个组的第一个n元素?

例如,如果n=2 那么结果将是:

           col1
idx1 idx2      
1    C      105
     B      102

2    A       19
     D       17

提前感谢您的考虑和回复。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    您只需要在已排序数据帧的groupby 上使用head

    df.sort_values('col1', ascending=False).groupby('idx1').head(2)
    

    输出:

               col1
    idx1 idx2      
    1    C      105
         B      102
    2    A       19
         D       17
    

    【讨论】:

      猜你喜欢
      • 2014-12-09
      • 2013-03-09
      • 2022-12-04
      • 2017-03-28
      • 2018-02-07
      • 2018-05-31
      • 2017-09-14
      • 2019-05-20
      • 2017-08-25
      相关资源
      最近更新 更多