You need to enable JavaScript to run this app. 如何基于datetime索引与指定列合并Pandas DataFrame
优惠活动
大模型
产品
解决方案
定价
更多

如何基于datetime索引与指定列合并Pandas DataFrame

合并实现方法

核心逻辑说明:

  • 两个df的列虽然物理顺序不同,但每个值是严格绑定对应列名的,必须按列名匹配值,不能按列的物理位置硬套df1的列顺序,否则会把df2的A、B值完全颠倒
  • 按datetime索引取两个df的日期并集,对重叠日期的重复行做去重,最终按日期排序、调整列顺序即可得到目标结果

具体实现代码

  1. 统一转换索引为datetime格式,避免对齐错位:
import pandas as pd

# 将两个数据帧的索引转换为标准日期格式
df1.index = pd.to_datetime(df1.index)
df2.index = pd.to_datetime(df2.index)
  1. 按列名自动对齐做外连接拼接:
# 按索引做外连接拼接,pandas会自动匹配列名对齐不同顺序的列
combined = pd.concat([df1, df2], join="outer")
  1. 去除重叠日期产生的重复行(两个df在重叠日期的记录值完全一致,去重不影响结果):
combined = combined.drop_duplicates(keep="first")
  1. 按日期升序排序,调整列顺序为A、B,得到最终结果:
df = combined.sort_index()[["A", "B"]]

结果匹配验证

  • 仅存在于df2的日期会严格按列名取值:比如01-05-2021,df2中B列值为11、A列值为0,对应最终结果A=0、B=11;01-06-2021df2中B列值为2、A列值为9,对应最终结果A=9、B=2,完全符合预期
  • 两个df重叠的日期记录值完全一致,去重后无重复索引、无值错位

注意:不要在处理时直接按列位置强行修改df2的列名,比如写df2.columns = ["A", "B"]这类操作,会直接把df2的A、B值颠倒,和预期结果不符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 19:27:04