簡體   English   中英

如何過濾具有 MultiIndex 級別 2 的多個條目的行?

[英]How to filter the rows with multiple entries of MultiIndex level two?

我有一個帶有 MultiIndex 的 dataframe,df。

df.columns
Index(['all', 'month', 'day', 'year'], dtype='object')
        all       month day year
  match             

7   0   10/24/89    10  24  89
8   0   3/7/86      3   7   86
    1   10          NaN NaN 10
9   0   4/10/71     4   10  71
10  0   5/11/85     5   11  85
    1   96          NaN NaN 96
    2   26          NaN NaN 26
11  0   10          NaN NaN 10
    1   4/09/75     4   09  75    
12  0   8/01/98     8   01  98

我如何 select 在 MultiIndex 級別 2 上具有超過 1 個條目的行?

例如,這里我需要第 8,10 和 11 行。

您可以通過第一級索引使用groupby.transform並使用len 然后在len更大且等於( ge )的地方獲得True ,以獲取您想要的 boolean 掩碼和 select 行。

print(df[df.groupby(level=0)['month'].transform(len).ge(2)])
                0  month   day  year
   match                            
8  0       3/7/86    3.0   7.0    86
   1           10    NaN   NaN    10
10 0      5/11/85    5.0  11.0    85
   1           96    NaN   NaN    96
   2           26    NaN   NaN    26
11 0           10    NaN   NaN    10
   1      4/09/75    4.0   9.0    75

在這里,我在 groupby 操作之后使用“月”作為列,但是 dataframe 中的任何列都可以使用。

您還可以使用groupby.filter並通過以下方式獲得相同的結果:

print(df.groupby(level=0).filter(lambda x: len(x)>=2))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM