切片多索引行 - '不能做标签索引'

问题描述 投票:0回答:2

我有一个包含两个级别的多索引行的数据框。级别为:qazxsw poi和qazxsw poi

<class 'pandas.tseries.index.DatetimeIndex'>

我试图得到一条“所有行,其中contract_serial = 201410”。

我尝试过<class 'pandas.indexes.numeric.Int64Index'>的几种变体

                                 px_settlement contract_code
assessment_date contract_serial                             
2014-01-02      201402                  18.640           g14
                201403                  17.530           h14
                201404                  16.600           j14
                201405                  15.900           k14
                201406                  16.100           m14
                201407                  16.200           n14
                201408                  15.210           q14
                201409                  15.210           u14
                201410                  15.210           v14
                201411                  15.210           x14

.loc

通过assessment_date或contract_serial分选这个多索引的正确方法是什么?

python pandas
2个回答
2
投票

使用jkm_df.loc[:, 201506] TypeError: cannot do label indexing on <class 'pandas.indexes.base.Index'> with these indexers [201506] of <class 'int'>

jkm_df.loc[(:, 201506), :]
            ^
SyntaxError: invalid syntax

如有必要,两个级别都使用参数DataFrame.xs

print (jkm_df.xs(201406, level=1))
                 px_settlement contract_code
assessment_date                             
2014-01-02                16.1           m14

使用drop_level=False解决方案:

print (jkm_df.xs(201406, level=1, drop_level=False))
                                 px_settlement contract_code
assessment_date contract_serial                             
2014-01-02      201406                    16.1           m14

loc的另一个解决方案:

print (jkm_df.loc(axis=0)[:, 201406])
                                 px_settlement contract_code
assessment_date contract_serial                             
2014-01-02      201406                    16.1           m14

2
投票

slicers有助于检索标量值。另一种解决方案(提供稍微更大的灵活性)是使用print (jkm_df.loc[(slice(None), 201406), :]) px_settlement contract_code assessment_date contract_serial 2014-01-02 201406 16.1 m14 + xs

pd.IndexSlice
© www.soinside.com 2019 - 2024. All rights reserved.