You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并两个pandas Series?含重叠与无重叠索引场景

Pandas Series 合并解决方案

场景1:存在重叠索引且对应值一致的合并

原始数据代码

import pandas as pd

index1 = list(range(6))
index2 = list(range(2, 8))

data1 = [7, 6, 1, 9, 3, 4]
data2 =       [1, 9, 3, 4, 10, 12]

s1 = pd.Series(data=data1, index=index1)
s2 = pd.Series(data=data2, index=index2)

需求

合并s1和s2得到新Series s3,保留s1的全部内容,同时补充s2中s1没有的索引对应值(重叠索引处值一致,无需处理冲突),最终输出如下:

0     7
1     6
2     1
3     9
4     3
5     4
6    10
7    12

解决方法

使用combine_first方法,该方法会优先使用调用者(s1)的值,当调用者索引缺失时,补充传入Series(s2)对应的值,完美适配重叠索引值一致的场景:

s3 = s1.combine_first(s2)
print(s3)

也可以用pd.concat结合分组去重,效果相同:

s3 = pd.concat([s1, s2]).groupby(level=0).first()
print(s3)

场景2:无重叠索引的合并

原始数据代码

import pandas as pd

index1 = list(range(6))
index2 = list(range(8, 14))

data1 = [7, 6, 1, 9, 3, 4]
data2 = [7, 2, 5, 6, 10, 12]

s1 = pd.Series(data=data1, index=index1)
s2 = pd.Series(data=data2, index=index2)

需求

合并s1和s2得到新Series s3,保留两个Series的全部内容,按原Series的顺序排列(先s1后s2),最终输出如下:

0      7
1      6
2      1
3      9
4      3
5      4
8      7
9      2
10     5
11     6
12    10
13    12
dtype: int64

解决方法

直接使用pd.concat,设置sort=False以保持原Series的索引顺序(默认sort=True会对索引进行排序):

s3 = pd.concat([s1, s2], sort=False)
print(s3)

内容的提问来源于stack exchange,提问作者Brian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 18:01:24