[英]Python Pandas Accessing values from second index in multi-indexed dataframe
我不太確定多索引是如何工作的,所以我可能只是試圖在這里做錯事。 如果我有一個數據框
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 索引的目的?
您可以使用xs
:
In [11]: df.xs(2, level='B')
Out[11]:
Value
A
1 6.87
2 9.87
或者:
In [12]: df1.xs(1, level=1)
Out[12]:
Value
A
1 5.67
2 8.67
作為替代方案,您可以使用df.loc
:
>>> df.loc[(slice(None),2),:]
Value
A B
1 2 6.87
2 2 9.87
元組按順序訪問索引。 因此, slice(None)
從索引'A'
所有值,第二個位置限制基於第二級索引,在此示例中'B'=2
。 :
指定您想要所有列,但您也可以對那里的列進行子集。
如果您只想返回橫截面,請使用xs
(如@Andy Hayden 所述)。
但是,如果您想覆蓋原始數據pd.IndexSlice
某些值,請改用pd.IndexSlice
(使用pd.loc
)。 給定一個數據框df
:
In [73]: df
Out[73]:
col_1 col_2
index_1 index_2
1 1 5 6
1 5 6
2 5 6
2 2 5 6
如果你想用0
覆蓋col_1
中的所有元素,其中index_2 == 2
做:
In [75]: df.loc[pd.IndexSlice[:, 2], 'col_1'] = 0
In [76]: df
Out[76]:
col_1 col_2
index_1 index_2
1 1 5 6
1 5 6
2 0 6
2 2 0 6
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.