我正在尝试根据索引为现有系列分配新值。但这种行为并不像我预期的那样。下面是一个复制结果的虚拟代码。
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中的错误。已在开发版本中修复
答案 0 :(得分:2)
我尝试了你发布的代码,我得到了你期望的结果x:
0 10
1 11
2 12
3 13
4 14
5 15
6 16
7 17
8 18
9 19
也许您使用的是旧版本的熊猫?