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

如何合并两个pandas DataFrame并按公共时间列完成排序

最优实现方案

你可以直接通过pandas.concat做纵向全量合并,再按时间列排序即可,注意提前确认时间列的格式为datetime类型避免排序出错,完整代码如下:

import pandas as pd

# 1. 纵向合并两张表的全量数据,ignore_index重置索引避免原表索引重复
combined_df = pd.concat([df1, df2], ignore_index=True)

# 可选步骤:如果时间列存储为字符串格式,先转换为datetime类型保证排序逻辑正确,替换为实际的时间列名
combined_df['你的时间列名'] = pd.to_datetime(combined_df['你的时间列名'])

# 2. 按时间列升序排序,如需降序可修改ascending参数为False
combined_df.sort_values(by='你的时间列名', ascending=True, ignore_index=True, inplace=True)

该方案是最优选择的原因如下:

  • pd.concat是pandas官方原生提供的多表纵向合并方法,性能远高于循环追加、append(append方法已在pandas 2.0及以上版本废弃)等实现
  • 排序时携带ignore_index=True参数,可在排序完成后直接重置行索引,无需额外调用reset_index(),减少冗余步骤
  • 通用适配所有场景,不需要两张表预先做任何预处理

如果已经确认两张表各自都已经按时间列完成升序排序,还可以使用性能更优的归并排序实现,时间复杂度更低:

# 仅适用df1、df2各自已按时间列升序排序的场景
combined_df = pd.merge_ordered(df1, df2, on='你的时间列名')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:09:04