我有一个带有 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))
添加回答
举报
0/150
提交
取消