我有一个多级索引数据框,长这样:
uid tid text
abc x t1
bcd y t2
其中,uid和tid是索引。我有一组uid列表,想要获取与该列表中的uid相对应的行,但保留第二级索引值(tid)。我希望在不运行任何显式循环的情况下完成。是否可能实现?
abc x t1
bcd y t2
其中,uid和tid是索引。我有一组uid列表,想要获取与该列表中的uid相对应的行,但保留第二级索引值(tid)。我希望在不运行任何显式循环的情况下完成。是否可能实现?
数据:
L = ['abc', 'bcd']
print (df)
text
uid tid
abc x t1
abc1 x t1
bcd y t2
1.slicers
idx = pd.IndexSlice
df1 = df.loc[idx[L,:],:]
布尔索引
+ 用get_level_values
获取索引级别值 + isin
筛选:df1 = df[df.index.get_level_values(0).isin(L)]
df1 = df.query('@L in uid')
print (df1)
text
uid tid
abc x t1
bcd y t2
df = df.sort_index()
进行排序,然后再使用第一种方法。sorting
的解释可在 'In 97' 中找到。 - jezrael