如何过滤具有多个 MultiIndex 二级条目的行?

我有一个带有 MultiIndex 的数据框 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


如何在 MultiIndex 级别 2 中选择具有 1 个以上条目的行?


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


皈依舞
浏览 125回答 1
1回答

不负相思意

您可以groupby.transform按第一级索引使用并使用len. 然后获取True大于len等于 ( ge) 的值(此处为 2)以获取所需的布尔掩码并选择行。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    1010 0      5/11/85    5.0  11.0    85   1           96    NaN   NaN    96   2           26    NaN   NaN    2611 0           10    NaN   NaN    10   1      4/09/75    4.0   9.0    75在这里,我在 groupby 操作之后使用“月”作为列,但数据框中的任何列都可以使用。您还可以使用groupby.filter并获得相同的结果:print(df.groupby(level=0).filter(lambda x: len(x)>=2))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python