python - Pandas - 子集数据框 - 获取最外层索引级别的所有值

标签 python pandas

考虑这个数据框:

np.random.seed(0)
index = pd.MultiIndex.from_product([['a', 'b'], ['c', 'd'], ['e', 'f']], names=['first', 'second', 'third'])
df = pd.DataFrame(data=np.random.randint(0,10,size=(8, 3)), index=index, columns=['foo', 'bar', 'baz'])
                    foo  bar  baz
first second third               
a     c      e        5    0    3
             f        3    7    9
      d      e        3    5    2
             f        4    7    6
b     c      e        8    8    1
             f        6    7    7
      d      e        8    1    5
             f        9    8    9

df.loc[['a', 'b'], :, 'e'] 工作并返回

                    foo  bar  baz
first second third               
a     c      e        5    0    3
      d      e        3    5    2
b     c      e        8    8    1
      d      e        8    1    5

但是 df.loc[:, : 'e'] 给出了一个错误。

那么如何使用 : 语法获取最外层索引级别的所有值?

最佳答案

您应该使用 IndexSlice 的多个索引

df.loc[pd.IndexSlice[:,:,'e'],]
Out[566]: 
                    foo  bar  baz
first second third               
a     c      e        5    0    3
      d      e        3    5    2
b     c      e        8    8    1
      d      e        8    1    5

或者查询

df.query("third=='e'")
Out[568]: 
                    foo  bar  baz
first second third               
a     c      e        5    0    3
      d      e        3    5    2
b     c      e        8    8    1
      d      e        8    1    5

关于python - Pandas - 子集数据框 - 获取最外层索引级别的所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57292368/

相关文章:

python - 检查 ipython 中最后一个命令的退出状态

python - 如何用 pandas 融化多索引中的第一级列

python - 使用索引和值过滤 Pandas 系列

python - 从 Pandas GroupBy 对象中提取特定值

python - 使用python计算tsv文件的列中单词的出现次数

python - 模块未找到错误: No module named 'pandas' in GitHub Actions

python - 当输入限制为 'yyyy-mm' 时,如何使 pd.to_datetime 插入月份的最后一天而不是第一天?

python - 如何计算在 Pandas 的另一列上分组的平均值

python - Sklearn 列转换器 ValueError : could not convert string to float:

python - 将 xarray.apply(np.nansum) 与 args 一起使用