我正在尝试对具有两个行 ID 的分层数据进行子集化。
假设我在 hdf
中有数据
index = MultiIndex(levels=[['foo', 'bar', 'baz', 'qux'],
['one', 'two', 'three']],
labels=[[0, 0, 0, 1, 1, 2, 2, 3, 3, 3],
[0, 1, 2, 0, 1, 1, 2, 0, 1, 2]])
hdf = DataFrame(np.random.randn(10, 3), index=index,
columns=['A', 'B', 'C'])
hdf
我希望子集化以便我看到 foo
和 qux
,子集化只返回子行 two
和列 A
和 C
。
我可以分两步完成:
sub1 = hdf.ix[['foo','qux'], ['A', 'C']]
sub1.xs('two', level=1)
有单步的方法吗?
谢谢
最佳答案
In [125]: hdf[hdf.index.get_level_values(0).isin(['foo', 'qux']) & (hdf.index.get_level_values(1) == 'two')][['A', 'C']]
Out[125]:
A C
foo two -0.113320 -1.215848
qux two 0.953584 0.134363
要复杂得多,但如果您想在第一级中选择许多不同的值会更好。
关于python - 对 Pandas 中的分层数据进行子集化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17645688/