使用索引替换Pandas 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 版本中有个 bug。在开发版本中已经修复了。
1 个回答
2
我试了你发的代码,得到了你期待的x的结果:
0 10
1 11
2 12
3 13
4 14
5 15
6 16
7 17
8 18
9 19
也许你用的是较旧版本的pandas?