我有一個帶有 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
提交
取消