相关疑难解决方法(0)

如何查询pandas中的MultiIndex索引列值

代码示例:

In [171]: A = np.array([1.1, 1.1, 3.3, 3.3, 5.5, 6.6])

In [172]: B = np.array([111, 222, 222, 333, 333, 777])

In [173]: C = randint(10, 99, 6)

In [174]: df = pd.DataFrame(zip(A, B, C), columns=['A', 'B', 'C'])

In [175]: df.set_index(['A', 'B'], inplace=True)

In [176]: df
Out[176]: 
          C
A   B      
1.1 111  20
    222  31
3.3 222  24
    333  65
5.5 333  22
6.6 777  74 
Run Code Online (Sandbox Code Playgroud)

现在,我想要检索A值:
Q1:在范围[3.3,6.6]中 - 预期返回值:[3.3,5.5,6.6]或[3.3,3.3,5.5,6.6],如果是最后一个,则[3.3,5.5 ]或[3.3,3.3,5.5],如果没有.
Q2:在[2.0,4.0]范围内 - 预期回报值:[3.3]或[3.3,3.3]

对于任何其他MultiIndex维度也是如此,例如B值:
Q3 …

python indexing slice multi-index pandas

56
推荐指数
3
解决办法
8万
查看次数

基于MultiIndex的pandas索引

如果我定义一个像这样的分层索引数据帧:

import itertools
import pandas as pd
import numpy as np
a = ('A', 'B')
i = (0, 1, 2)
b = (True, False)
idx = pd.MultiIndex.from_tuples(list(itertools.product(a, i, b)),
                                names=('Alpha', 'Int', 'Bool'))
df = pd.DataFrame(np.random.randn(len(idx), 7), index=idx,
                  columns=('I', 'II', 'III', 'IV', 'V', 'VI', 'VII'))
Run Code Online (Sandbox Code Playgroud)

内容看起来像这样:

In [19]: df
Out[19]: 
                        I        II       III        IV         V        VI       VII
Alpha Int Bool                                                                       
A     0   True  -0.462924  1.210442  0.306737  0.325116 -1.320084 -0.831699  0.892865
          False -0.850570 -0.949779  0.022074 -0.205575 -0.684794 -0.214307 -1.133833
      1   True   0.603602 …
Run Code Online (Sandbox Code Playgroud)

pandas

24
推荐指数
1
解决办法
1万
查看次数

标签 统计

pandas ×2

indexing ×1

multi-index ×1

python ×1

slice ×1