输入:
midx = pd.MultiIndex.from_product([['A0','A1'], ['B0','B1','B2','B3']])
columns = ['foo', 'bar']
t = pd.DataFrame(np.arange(16).reshape((len(midx), len(columns))),
index=midx, columns=columns)
输出:
In [6]: t
Out[6]:
foo bar
A0 B0 0 1
B1 2 3
B2 4 5
B3 6 7
A1 B0 8 9
B1 10 11
B2 12 13
B3 14 15
问题:
让v = pd.IndexSlice['A0','B0':'B1']
。我可以访问 t.loc[v,:]
:
In [13]: t.loc[v,:]
Out[13]:
foo bar
A0 B0 0 1
B1 2 3
来自 [v,v]
,如何获取以下数据框?
In [13]: f([v,v])
Out[13]:
foo bar
A0 B0 0 1
B1 2 3
B0 0 1
B1 2 3
我无法指定这些多索引切片器的列表:t.loc[[v,v],:]
将引发异常:Unashable type: 'slice'
。为什么会这样呢?使用标量时,我可以轻松列出所需的位置:t.loc[[('A0','B0'),('A0','B1')],:]
.
最佳答案
尝试:
t.loc[tuple(zip(v, v)),:]
应该是:
u = (['A0', 'A1'], [slice('B0', 'B1', None), slice('B0', 'B1', None)])
尝试采用上面的形式。
t.loc[u,:]
foo bar
A0 B0 0 1
B1 2 3
A1 B0 8 9
B1 10 11
关于python - pd.IndexSlice 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65723761/