python 中系列的层次结构索引中的 x[1,2] 和 x[1][2] 有什么区别?
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,但是我相信 pandas 中也发生了类似的事情(它在内部使用了 numpy,使用 "indexers" 提供了一个(可能) 命名索引和基于整数的基础索引)。
So note that x[0,2] = x[0][2] though the second case is less efficient as a new temporary array is created after the first index that is subsequently indexed by 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]
然后 returns x
的横截面,我们尝试用 ['a']
在其上再次切片。
我有一个系列
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,但是我相信 pandas 中也发生了类似的事情(它在内部使用了 numpy,使用 "indexers" 提供了一个(可能) 命名索引和基于整数的基础索引)。
So note that x[0,2] = x[0][2] though the second case is less efficient as a new temporary array is created after the first index that is subsequently indexed by 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]
然后 returns x
的横截面,我们尝试用 ['a']
在其上再次切片。