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

如何在Pandas中合并股票时间序列DataFrame并优先保留新数据以避免重复列?

解决方法:合并重叠时间序列DataFrame并优先保留新数据

这个问题其实很常见——要合并两个有重叠时间序列的DataFrame,并且优先保留新数据(df1),同时避免生成重复列。你之前用merge_ordered的方式确实会把相同时间的行拆分成两组列,这不是我们想要的效果。

这里有个简单直接的解决方案,核心思路是先把两个DataFrame合并,然后基于open time去重并保留新数据,最后重新排序:

步骤1:确保时间列是datetime类型

首先,确保你的open time列是datetime类型(如果还不是的话),这样后续排序和去重更准确:

df['open time'] = pd.to_datetime(df['open time'])
df1['open time'] = pd.to_datetime(df1['open time'])

步骤2:合并并去重

执行合并和去重操作,优先保留df1的数据:

# 先把旧数据和新数据合并,注意把新数据放在后面,这样去重时会优先保留它
combined = pd.concat([df, df1])
# 按open time去重,keep='last'表示保留最后出现的行(也就是df1的行)
final_df = combined.drop_duplicates(subset='open time', keep='last')
# 最后按时间排序,恢复时间序列的顺序,并重置索引
final_df = final_df.sort_values('open time').reset_index(drop=True)

结果说明

这样得到的final_df会满足你的需求:

  • 保留df中所有不在df1里的历史行(也就是2021-12-29 23:45到2021-12-30 00:30的记录)
  • 保留df1的所有行(包括和df重叠的行,哪怕重叠行的数据有差异,也会优先保留df1的最新数据)
  • 结构和原DataFrame完全一致,没有任何重复列

这个方法非常适合股票价格这类时间序列的增量更新场景,逻辑清晰且效率很高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 06:50:11