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

如何在Python Pandas中基于相同ID列合并3个Series为DataFrame

解决方案

假设你的三个Series分别命名为s1、s2、s3,每个Series的索引为人员姓名(Name),值对应不同时间的指标(比如s1对应2020-01,s2对应2020-02,s3对应2020-03),以下是两种可行的合并方法:

方法1:用pd.concat按列合并(高效简洁)

直接指定按列合并方向,给每个Series命名对应时间列,最后将索引转为Name列:

import pandas as pd

# 给每个Series设置对应时间的列名
s1 = s1.rename('2020-01')
s2 = s2.rename('2020-02')
s3 = s3.rename('2020-03')

# 按列合并后重置索引,把原索引(Name)转为列
result_df = pd.concat([s1, s2, s3], axis=1).reset_index().rename(columns={'index': 'Name'})

方法2:用merge逐步合并(灵活处理缺失值)

如果需要精准控制合并逻辑(比如只保留共同存在的姓名),可以逐个合并:

import pandas as pd

# 将每个Series转为带Name列的DataFrame
df1 = s1.reset_index().rename(columns={'index': 'Name', 0: '2020-01'})
df2 = s2.reset_index().rename(columns={'index': 'Name', 0: '2020-02'})
df3 = s3.reset_index().rename(columns={'index': 'Name', 0: '2020-03'})

# 按Name列合并,how='outer'保留所有姓名,改'inner'则只保留三者共有的姓名
result_df = df1.merge(df2, on='Name', how='outer').merge(df3, on='Name', how='outer')

失败原因说明

你之前用concat未成功,大概率是没指定axis=1(默认axis=0是按行堆叠),或者没给Series设置明确列名,导致合并后结构不符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 11:07:42