Python / Pandas-查询MultiIndex列

Sco*_*t B 7 python multi-index pandas

我正在尝试在MultiIndex列上使用查询。它适用于MultiIndex行,但不适用于该列。是否有一个原因?该文档显示的示例类似于下面的第一个示例,但并不表示它不适用于MultiIndex列。

我知道还有其他方法可以做到这一点,但是我正在专门尝试使用查询功能来做到这一点。

import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.random((4,4)))
df.index = pd.MultiIndex.from_product([[1,2],['A','B']])
df.index.names = ['RowInd1', 'RowInd2']
# This works
print(df.query('RowInd2 in ["A"]'))

df = pd.DataFrame(np.random.random((4,4)))
df.columns = pd.MultiIndex.from_product([[1,2],['A','B']])
df.columns.names = ['ColInd1', 'ColInd2']
# query on index works, but not on the multiindexed column
print(df.query('index < 2'))
print(df.query('ColInd2 in ["A"]'))
Run Code Online (Sandbox Code Playgroud)

Sco*_*t B 1

为了回答我自己的问题,根据此处的答案,看起来根本不应该使用查询(无论是否使用多索引列)来选择某些列:

使用 pandas dataframe.query() 选择列