![](/img/trans.png)
[英]Python - What's the difference between “in” and “in x for x in”
[英]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.