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

合并同名列的两个Series后如何重命名Pandas DataFrame列

Pandas合并同名Series后分别重命名列的方法

你遇到的问题根源在于两个Series的列名完全相同,合并后DataFrame的列标签是重复的,使用列名映射重命名时会匹配所有同名列,导致同时修改。以下是几种可行的解决方法:

方法一:合并时直接指定列名(推荐)

在合并前先给每个Series重命名,或者利用concat的keys参数直接设置列名:

# 方式1:合并前重命名Series
z = pd.concat([x.rename('Start'), y.rename('End')], axis=1)

# 方式2:使用concat的keys参数
z = pd.concat([x, y], axis=1, keys=['Start', 'End'])
# 若不需要多层列索引,可转为单层
z.columns = z.columns.get_level_values(0)

方法二:合并后直接赋值列名

如果确定合并后的列顺序是x在前、y在后,直接给columns属性赋值新名称即可:

z = pd.concat([x, y], axis=1)
z.columns = ['Start', 'End']

方法三:通过位置映射重命名

如果需要保留原有列名逻辑,也可以结合列的位置进行重命名:

z = pd.concat([x, y], axis=1)
z = z.rename(columns={z.columns[i]: name for i, name in enumerate(['Start', 'End'])})

为什么原方法失效?

原代码中z.columns[0]返回的是字符串'Timestamp',而rename的列映射会匹配所有等于该字符串的列,因此两列会被同时重命名为'Start',无法区分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 00:01:09