为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

皈依舞 2023-05-09 16:08:32
我有一个带有 MultiIndex 的数据框 df。df.columnsIndex(['all', 'month', 'day', 'year'], dtype='object')        all       month day year  match             7   0   10/24/89    10  24  898   0   3/7/86      3   7   86    1   10          NaN NaN 109   0   4/10/71     4   10  7110  0   5/11/85     5   11  85    1   96          NaN NaN 96    2   26          NaN NaN 2611  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 行。
查看完整描述

1 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

您可以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    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 操作之后使用“月”作为列,但数据框中的任何列都可以使用。


您还可以使用groupby.filter并获得相同的结果:


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


查看完整回答
反对 回复 2023-05-09
  • 1 回答
  • 0 关注
  • 101 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信