Python 切片多索引行--';无法进行标签索引';

Python 切片多索引行--';无法进行标签索引';,python,pandas,Python,Pandas,我有一个数据帧,它有两层多索引行。类型的级别为:和 例如,我正在尝试获取“contract_serial=201410的所有行”的切片 我尝试了.loc的几种变体 jkm_df.loc[:, 201506] TypeError: cannot do label indexing on <class 'pandas.indexes.base.Index'> with these indexers [201506] of <class 'int'> 通过评估日期或合同序列

我有一个数据帧,它有两层多索引行。类型的级别为:

例如,我正在尝试获取“contract_serial=201410的所有行”的切片

我尝试了
.loc的几种变体

jkm_df.loc[:, 201506]

TypeError: cannot do label indexing on <class 'pandas.indexes.base.Index'> with these indexers [201506] of <class 'int'>
通过评估日期或合同序列选择此多指标的正确方法是什么?

使用:

如有必要,两个级别也使用参数
drop\u 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
解决方案包括:

另一个解决方案包括:

使用:

如有必要,两个级别也使用参数
drop\u 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
解决方案包括:

另一个解决方案包括:


xs
适用于检索标量值。另一个解决方案(提供稍微更大的灵活性)是使用
pd.indexlice
+
loc

idx = pd.IndexSlice
df.loc[idx[:, 201410], :]

                                 px_settlement contract_code
assessment_date contract_serial                             
2014-01-02      201406                    16.1           m14

xs
适用于检索标量值。另一个解决方案(提供稍微更大的灵活性)是使用
pd.indexlice
+
loc

idx = pd.IndexSlice
df.loc[idx[:, 201410], :]

                                 px_settlement contract_code
assessment_date contract_serial                             
2014-01-02      201406                    16.1           m14

idx=pd.indexlice;df.loc[idx[:,201410],:]
@coldspeed哇,快点,谢谢
idx=pd.indexlice;df.loc[idx[:,201410],:]
@coldspeed哇,快点,谢谢!我将添加索引作为答案,可以吗?这取决于你。干杯,节日快乐@Cᴏʟᴅsᴘᴇᴇᴅ - 我把它签回给dupe,但谢谢你。好吧,这取决于你。我也删除了我的答案。请记住,我对你的问题是,你有时会回答明显重复的问题(不仅仅是任何重复的问题)。你已经回答了数千个问题,所以当你写同样的东西时,你应该注意。我不认为我是任何人的老板,我的自我没有那么膨胀。另外,请不要玩受害者牌,因为你知道你过去犯过错误,这不值得讨论。我已经删除了我的答案,因为你已经做出了一个崇高的决定,不再发布你的答案。让我们从这里继续。我将添加索引作为答案,好吗?这取决于你。干杯,节日快乐@Cᴏʟᴅsᴘᴇᴇᴅ - 我把它签回给dupe,但谢谢你。好吧,这取决于你。我也删除了我的答案。请记住,我对你的问题是,你有时会回答明显重复的问题(不仅仅是任何重复的问题)。你已经回答了数千个问题,所以当你写同样的东西时,你应该注意。我不认为我是任何人的老板,我的自我没有那么膨胀。另外,请不要玩受害者牌,因为你知道你过去犯过错误,这不值得讨论。我已经删除了我的答案,因为你已经做出了一个崇高的决定,不再发布你的答案。让我们从这开始。
print (jkm_df.loc(axis=0)[:, 201406])
                                 px_settlement contract_code
assessment_date contract_serial                             
2014-01-02      201406                    16.1           m14
print (jkm_df.loc[(slice(None), 201406), :])
                                 px_settlement contract_code
assessment_date contract_serial                             
2014-01-02      201406                    16.1           m14
idx = pd.IndexSlice
df.loc[idx[:, 201410], :]

                                 px_settlement contract_code
assessment_date contract_serial                             
2014-01-02      201406                    16.1           m14