pandas 根据多指标水平值删除观察值
pandas remove observations depending on multi-index level value
我有一个多索引数据框,级别为 'id' 和 'year':
value
id year
10 2001 100
2002 200
11 2001 110
12 2001 200
2002 300
13 2002 210
我想保留具有 2001 年和 2002 年值的 id
s。这意味着我想获得:
value
id year
10 2001 100
2002 200
12 2001 200
2002 300
我知道 df.loc[df.index.get_level_values('year') == 2002]
有效,但我无法将其扩展到 2001 年和 2002 年。
提前致谢。
如何使用 groupby
和 filter
:
df.groupby(level=0).filter(
lambda df:np.in1d([2001, 2002], df.index.get_level_values(1)).all()
)
我有一个多索引数据框,级别为 'id' 和 'year':
value
id year
10 2001 100
2002 200
11 2001 110
12 2001 200
2002 300
13 2002 210
我想保留具有 2001 年和 2002 年值的 id
s。这意味着我想获得:
value
id year
10 2001 100
2002 200
12 2001 200
2002 300
我知道 df.loc[df.index.get_level_values('year') == 2002]
有效,但我无法将其扩展到 2001 年和 2002 年。
提前致谢。
如何使用 groupby
和 filter
:
df.groupby(level=0).filter(
lambda df:np.in1d([2001, 2002], df.index.get_level_values(1)).all()
)