我有带有 MultiIndex 列的 DataFrame,如下所示:
# sample data
col = pd.MultiIndex.from_arrays([['one', 'one', 'one', 'two', 'two', 'two'],
['a', 'b', 'c', 'a', 'b', 'c']])
data = pd.DataFrame(np.random.randn(4, 6), columns=col)
data
['a', 'c']
从第二级只选择特定列(例如,不是范围)的正确、简单的方法是什么?
目前我正在这样做:
import itertools
tuples = [i for i in itertools.product(['one', 'two'], ['a', 'c'])]
new_index = pd.MultiIndex.from_tuples(tuples)
print(new_index)
data.reindex_axis(new_index, axis=1)
然而,这感觉不是一个好的解决方案,因为我必须退出itertools
,手动构建另一个 MultiIndex,然后重新索引(而且我的实际代码更加混乱,因为获取列列表并不那么简单)。我很确定必须有一些ix
方法xs
可以做到这一点,但是我尝试的一切都导致了错误。