Python 根据指定的索引,组合不同长度的熊猫系列1和系列2
我有两个不同长度的系列: S1->fromPython 根据指定的索引,组合不同长度的熊猫系列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
[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
inreindex
方法,比如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)