Pandas系列使用索引替换值

时间:2014-03-21 19:13:53

标签: python pandas variable-assignment slice series

我正在尝试根据索引为现有系列分配新值。但这种行为并不像我预期的那样。下面是一个复制结果的虚拟代码。

import pandas as pd
import numpy as np

x = pd.Series(range(10))
y = pd.Series(range(10, 20))
ind = np.random.permutation(range(10))

x
0    0
1    1
2    2
3    3
4    4
5    5
6    6
7    7
8    8
9    9

y

0    10
1    11
2    12
3    13
4    14
5    15
6    16
7    17
8    18
9    19

ind
array([0, 9, 8, 7, 3, 6, 4, 5, 2, 1])

x[ind] = y[ind]  #try to assign based on identical index 
x

我希望获得以下x。

0    10
1    11
2    12
3    13
4    14
5    15
6    16
7    17
8    18
9    19

相反,我得到了

0    10
1    19
2    18
3    17
4    13
5    16
6    14
7    15
8    12
9    11

基本上,它将y [ind]分配给x并忽略了索引。难道我做错了什么?如果ind不包含x中的整个数据,则分配似乎是正确的。

看起来它是0.13.0和0.13.1中的错误。已在开发版本中修复

1 个答案:

答案 0 :(得分:2)

我尝试了你发布的代码,我得到了你期望的结果x:

0    10
1    11
2    12
3    13
4    14
5    15
6    16
7    17
8    18
9    19

也许您使用的是旧版本的熊猫?