[英]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.