python – pandas:使用.loc和MultiIndex进行条件选择
作者:互联网
我已经阅读了Advanced indexing with hierarchical index的文档,其中解释了使用.loc for MultiIndex.也是这个帖子:Using .loc with a MultiIndex in pandas?
我仍然没有看到如何选择行(第一个索引==某个值)或(第二个索引==某个值)
例:
import pandas as pd
index = pd.MultiIndex.from_arrays([['a', 'a', 'a', 'b', 'b', 'b'],
['a', 'b', 'c', 'a', 'b', 'c']],
names=['i0', 'i1'])
df = pd.DataFrame({'x': [1,2,3,4,5,6], 'y': [6,5,4,3,2,1]}, index=index)
这是DataFrame:
x y
i0 i1
a a 1 6
b 2 5
c 3 4
b a 4 3
b 5 2
c 6 1
如何获取i0 ==’b’或i1 ==’b’的行?
x y
i0 i1
a b 2 5
b a 4 3
b 5 2
c 6 1
解决方法:
>>> mask = (df.index.get_level_values(0)=='b') | (df.index.get_level_values(1)=='b')
>>> df[mask] # same as df.loc[mask]
x y
i0 i1
a b 2 5
b a 4 3
b 5 2
c 6 1
标签:multi-index,python,pandas,dataframe 来源: https://codeday.me/bug/20190910/1801460.html