猿问

Python Pandas从多索引数据框中的第二个索引访问值

我不确定多索引的工作原理,所以我可能只是在这里尝试做错事情。如果我有一个数据框


        Value

A  B         

1  1    5.67

1  2    6.87

1  3    7.23

2  1    8.67

2  2    9.87

2  3    10.23

如果要访问B = 2的元素,该怎么做?df.ix [2]给我A = 2。要获得特定值,似乎是df.ix [(1,2)],但这是B索引的目的,如果您不能直接访问它的话?


慕桂英3389331
浏览 269回答 3
3回答

MM们

您可以使用xs:In [11]: df.xs(2, level='B')Out[11]:   ValueA1   6.872   9.87或者:In [12]: df1.xs(1, level=1)Out[12]:   ValueA1   5.672   8.67

素胚勾勒不出你

作为一种替代方法,您可以使用df.loc:>>> df.loc[(slice(None),2),:]     ValueA B       1 2   6.872 2   9.87元组按顺序访问索引。因此,根据第二级索引slice(None)从index 'A',第二位置限制中获取所有值,'B'=2在本示例中为。在:指定要所有列,但你可以subet列有作为。

叮当猫咪

如果只想返回横截面,请使用xs(如@Andy Hayden所述)。但是,如果要覆盖原始数据框中的某些值,请改用pd.IndexSlice(with pd.loc)。给定一个数据框df:In [73]: dfOut[73]:                 col_1  col_2index_1 index_21       1            5      6        1            5      6        2            5      62       2            5      6如果您想用where的0所有元素覆盖col_1,index_2 == 2请执行以下操作:In [75]: df.loc[pd.IndexSlice[:, 2], 'col_1'] = 0In [76]: dfOut[76]:                 col_1  col_2index_1 index_21       1            5      6        1            5      6        2            0      62       2            0      6
随时随地看视频慕课网APP

相关分类

Python
我要回答