簡體   English   中英

x [1,2]和x [1] [2]在python中的系列的層次結構索引中有什么區別?

[英]what is the difference between x[1,2] and x[1][2] in hierarchy indexing for series in python?

我有一系列

x=pd.Series(np.random.random(16),index=[[1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4],['a','b','c','d','a','b','c','d','a','b','c','d','a','b','c','d']]) 

看起來像這樣:

1  a   -0.068167
   b   -1.036551
   c   -0.246619
   d    1.318381
2  a   -0.119061
   b    0.249653
   c    0.819153
   d    1.334510
3  a    0.029305
   b   -0.879798
   c    1.081574
   d   -1.590322
4  a    0.620149
   b   -2.197523
   c    0.927573
   d   -0.274370
dtype: float64

x [1,'a']和x [1] ['a']有什么區別。 它給了我相同的答案。 我對內部差異意味着什么感到困惑? 什么時候應該使用以上兩個索引?

這種解釋來自numpy docs ,但是我認為在熊貓中也發生了類似的事情(熊貓內部使用numpy,使用“索引器”在(可能)命名索引和基於整數的基礎索引之間提供了映射)。

因此請注意,盡管第二種情況效率較低,但x [0,2] = x [0] [2]的效率較低,因為在第一個索引之后創建了一個新的臨時數組,隨后將其索引為2。

這是您的系列節目的時間安排; 第一種方法快30倍左右:

In [79]: %timeit x[1, 'a']
100000 loops, best of 3: 8.46 µs per loop

In [80]: %timeit x[1]['a']
1000 loops, best of 3: 274 µs per loop

x[1, 'a']的情況下,pandas將1, 'a'作為元組(1, 'a')並返回與(1, 'a')索引標簽對應的系列值。

對於x[1]['a'] ,pandas正在確定您在[]傳遞的不是一個元組,它可以在其中引用其索引,因此最終得出它可能是對元素的引用第一階段。 x[1]然后返回x的橫截面,我們嘗試在該橫截面上再次使用['a']進行切片。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM