Python 根据指定的索引,组合不同长度的熊猫系列1和系列2

Python 根据指定的索引,组合不同长度的熊猫系列1和系列2,python,pandas,numpy,add,Python,Pandas,Numpy,Add,我有两个不同长度的系列: S1->from[1,2,3,4,5,6,7,8,9,10],索引从0到9 S2->[2,4,8],索引具体等于[4,7,8] 我需要特别在位置[4,7,8]添加S2到S1的元素 理想情况下,S3应该如下所示: [1,2,3,4,7,6,7,12,17,10] import numpy as np, pandas as pd S1 = np.array([1,2,3,4,5,6,7,8,9,10]) S2 = np.array([2,4,8]) S1 = pd.Se

我有两个不同长度的系列:

S1->from
[1,2,3,4,5,6,7,8,9,10]
,索引从0到9

S2->
[2,4,8]
,索引具体等于
[4,7,8]

我需要特别在位置
[4,7,8]
添加S2到S1的元素

理想情况下,S3应该如下所示:

[1,2,3,4,7,6,7,12,17,10]

import numpy as np, pandas as pd

S1 = np.array([1,2,3,4,5,6,7,8,9,10])
S2 = np.array([2,4,8])

S1 = pd.Series(S1)
S2 = pd.Series(S2, index = [4,7,8])

如果要更新S1系列,只需运行以下命令:

S1.iloc[[4,7,8]] = S2
试一试

第一个
reindex
S2系列

S2 = S2.reindex(range(10)).fillna(0)
然后
添加
S1+S2
并分配给
S3

S3 = S1 + S2

print(S3)

0     1.0
1     2.0
2     3.0
3     4.0
4     7.0
5     6.0
6     7.0
7    12.0
8    17.0
9    10.0
如果您正在查找
整数
列表。那么

S3 = np.array(S3, int)

array([ 1,  2,  3,  4,  7,  6,  7, 12, 17, 10])
或者,您可以在添加之前直接将
S2
转换为
int

S2 = S2.reindex(range(10)).fillna(0)
S3 = S1 + np.array(S2,int)
编辑:

根据@ShubhamSharma的评论

S2 = S2.reindex(S1.index, fill_value=0)
S3 = S1 + S2

事实上,我自己想:

S3 = S1+S2
S3 = S3.fillna(value = S1)

print(S3)

感谢大家的努力和时间。

@ShubhamSharma OP不需要
更新。他想
添加
两个
系列
,其中
索引
匹配。@Tommy是的,你是对的,我误读了那部分。OP不是在寻找
更新
。他想
添加
这两个
系列
索引
匹配的地方。Tommy不使用
range(10)
你也可以使用
S2.reindex(S1)
S2.reindex(S1.index)
你也可以选择传递
fill\u value=0
in
reindex
方法,比如
S2.reindex(S1.index,fill_value=0)
:)@ShubhamSharma感谢您的分享。很高兴知道:)@ShubhamSharma添加了一个包含您的建议的编辑:如果
S2
的索引是
S1
index
的子集,这里还有一个想法,我们也可以直接使用
系列。在这里添加
就像
S1。添加(S2,fill\u value=0)
我认为这是一个简单的问题和解决方案。但是,现在我明白了,这背后有丰富的知识。再次谢谢你。!
S3 = S1+S2
S3 = S3.fillna(value = S1)

print(S3)