我想从具有多个独立索引器的MultiIndex中选择多个列。举个例子
df = pd.DataFrame(
np.zeros((2,4)),
columns=pd.MultiIndex.from_product([('a','b'),(1,2)])
)
从该DataFrame
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]
4条答案
按热度按时间iovurdzv1#
对于共享的示例,切片工作正常:
8yoxcaq72#
您可以分别选择列并将它们连接起来。
yqlxgs2m3#
下面是一个使用两个布尔掩码的选项
输出:
z9smfwbn4#
另一种可能的解决方案:
或者:
输出: