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

标签 python pandas

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

我希望子集化以便我看到 fooqux,子集化只返回子行 two 和列 AC

我可以分两步完成:

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/

相关文章:

python - 使用Python的pillow/PIL库:

python - 尝试使用未初始化的值变量 - Tensorflow (Python)

python - 如何使用groupby中的两个组计算百分比?

Python从多列中获取值计数并从另一列中取平均值

python - skfuzzy无法识别

php - php 文件如何找到其他 php 文件中的 namespace ?

python - 使用 python 使用 for 循环导入文本文件

Python 将行总结为列(Pandas 数据透视表)

python - 如何一次旋转时间序列列的 N 个观察值

python - 如何 groupby() 在多列上聚合并重命名 Pandas 0.21+ 中的多索引?