【发布时间】:2021-10-16 20:16:18
【问题描述】:
我有一个多索引数据框,但我想为每个 0 级变量(即“一”和“二”列)在每个 1 级保留两列。我可以单独对它们进行子集化,但我想一起做,这样我就可以并排保持这些值
这是数据框
index = pd.MultiIndex.from_tuples(list(zip(*[['bar1', 'foo1', 'bar1', 'foo2','bar3','foo3'], ['one','two','three','two','one','four']])))
df = pd.DataFrame(np.random.randn(2, 6), columns=index)
这是在级别 1 中对一列进行子集化的方法
df.iloc[:, df.columns.get_level_values(1)== 'one']
# or
df.xs('one', level=1, axis=1)
# but adding two columns within either command will not work e.g.
df.xs(('one','two), level=1, axis=1)
这将是预期的输出
bar1 foo1 foo2 bar3
one two two one
0 -0.508272 -0.195379 0.865563 2.002205
1 -0.771565 1.360479 1.900931 -1.589277
欢迎任何建议,非常感谢!
【问题讨论】:
-
您可以将
xs选择视为垂直选择,因此('bar1', 'one')。在级别内选择时,所提供的解决方案非常适合
标签: python pandas multi-index