pandas MultiIndex 的多个切片器

标签 pandas slice multi-index

我想从具有多个独立索引器的 MultiIndex 中选择多个列。例如

df = pd.DataFrame(
    np.zeros((2,4)),
    columns=pd.MultiIndex.from_product([('a','b'),(1,2)])
)

来自此数据框

    a       b   
    1   2   1   2
0   0   0   0   0
1   0   0   0   0

我想选择 'a' 下的所有列加('b', 1) ,例如df[[('a', 1), ('a', 2), ('b', 1)]] ,但我不想显式指定 'a' 下面的列的所有级别.

什么不起作用:

  • df[['a', ('b', 1)]] :KeyError: "[('b', 1)] not in index"
  • df.loc[:, ['a', ('b', 1)]] :KeyError: "[('b', 1)] not in index"
  • df[[('a', slice(None)), ('b', 1)]] :TypeError: unhashable type: 'slice'
  • df.loc[:, [pd.IndexSlice['a', :], ('b', 1)]] :TypeError: unhashable type: 'slice'

我希望能够做的另一件类似的事情是:('a', 1)pd.IndexSlice[:, 2]

最佳答案

您可以单独选择列并将它们连接起来。

out = pd.concat([df.xs('a', axis=1, drop_level=False),
                 df.xs(('b', 1), axis=1, drop_level=False)],
                axis=1)
print(out)

     a         b
     1    2    1
0  0.0  0.0  0.0
1  0.0  0.0  0.0

关于pandas MultiIndex 的多个切片器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76315518/

相关文章:

python - Pandas 类别 : keep only most common ones and replace rest with NaN

具有多个标题的python matplotlib绘图表

python - 将 DataFrame 列表保存到多表 Excel 电子表格

python - 对行(但不是全部)求和,给其他行默认值

python - 命令行 : Python program says "Killed"

go - golang中 slice 的cap vs len

vba - 在任何事件工作表而不是工作表 1 上运行的代码

arrays - 如何动态地将对象分配给 Go 中 slice 中的字符串键?

python - 如何从合并表创建 MultiIndex Dataframe?

python - Multiindex 中的 Pandas 自定义排序行