1

2 つの行 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ます。quxtwoAC

これは、次の 2 つの手順で行うことができます。

sub1 = hdf.ix[['foo','qux'], ['A', 'C']]
sub1.xs('two', level=1)

これを行うためのシングルステップの方法はありますか?

ありがとう

4

4 に答える 4

1

itertools救助へ:

>>> from itertools import product
>>> 
>>> def _p(*iterables):
...     return list(product(*iterables))
... 
>>> hdf.ix[ _p(('foo','qux'),('two',)), ['A','C'] ]
                A         C
foo two  1.125401  1.389568
qux two  1.051455 -0.271256
>>> 
于 2013-07-15T03:41:35.950 に答える