Skip to main content
 首页 » 编程设计

python之对 Pandas 中的分层数据进行子集化

2025年05月04日18myhome

我正在尝试对具有两个行 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 

要复杂得多,但如果您想在第一级中选择许多不同的值会更好。