如何合并两个Pandas DataFrame并调整第二个的time列后拼接?
Pandas合并DataFrame并调整时间列的可行思路
先给出可复现的输入数据:
import pandas as pd df1 = pd.DataFrame({ 'time': [0.00, 0.01, 0.02, 0.03, 0.04], 'power': [800.380000, 788.281667, 776.183333, 764.085000, 782.222500] }) df2 = pd.DataFrame({ 'time': [0.00, 0.01, 0.02, 0.03, 0.04], 'power': [1485.715, 1485.915, 1485.715, 1450.980, 1450.995] })
思路1:分步调整+合并
这是最直观的方案,步骤清晰易理解:
- 计算df1的最大时间值:
max_time = df1['time'].max() - 复制df2(避免修改原始数据),调整其
time列每个值加上最大时间 - 用
pd.concat合并两个DataFrame,最后重置索引去除重复行号
代码示例:
max_time = df1['time'].max() df2_adjusted = df2.copy() df2_adjusted['time'] += max_time result = pd.concat([df1, df2_adjusted]).reset_index(drop=True)
思路2:链式操作简化代码
追求代码简洁的话,可用assign直接生成调整后的df2,无需单独创建中间变量,一步完成合并:
result = pd.concat([ df1, df2.assign(time=df2['time'] + df1['time'].max()) ]).reset_index(drop=True)
assign会返回新的DataFrame,不会改动原始df2,适合快速实现需求。
思路3:兼容旧版本的append方法(不推荐)
如果使用Pandas 2.0以下的旧版本,也可以用append实现,但该方法已被官方弃用,建议优先用concat:
max_time = df1['time'].max() result = df1.append(df2.assign(time=df2['time'] + max_time)).reset_index(drop=True)
执行以上任意一种方法后,result就是你需要的目标DataFrame。
内容的提问来源于stack exchange,提问作者Karma_X
相关产品推荐
相关产品推荐

