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

Python中外合并DataFrame:左表更大的时间序列合并异常问题

pandas时间序列Outer Join丢失行的问题解决

问题原因

你使用的pd.merge([df_1, df_2], how="outer", on="Time")是错误用法——pd.merge的第一个参数应为左DataFrame,第二个为右DataFrame,不能将两个DataFrame打包成列表传入。这种错误写法会导致合并逻辑异常,进而丢失Time为0、1、2的行。

正确实现步骤

  1. 构造示例数据(可复现场景)
import pandas as pd

# 右表df_1:Time 3-5,对应Series 1数据
df_1 = pd.DataFrame({
    'Time': [3, 4, 5],
    'Series 1': [10, 20, 30]
})

# 左表df_2:Time 0-6,对应Series 2数据
df_2 = pd.DataFrame({
    'Time': [0, 1, 2, 3, 4, 5, 6],
    'Series 2': [5, 6, 7, 8, 9, 10, 11]
})
  1. 执行正确的Outer Join
    以df_2为左表传入第一个参数,df_1为右表传入第二个参数,指定how="outer"实现并集合并,同时设置sort=False保留左表的时间序列顺序:
merged_df = pd.merge(df_2, df_1, how="outer", on="Time", sort=False)

合并结果

最终得到的merged_df会包含所有Time值,缺失数据自动用NaN填充,且顺序与df_2完全一致:

Time  Series 2  Series 1
0     0         5       NaN
1     1         6       NaN
2     2         7       NaN
3     3         8      10.0
4     4         9      20.0
5     5        10      30.0
6     6        11       NaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 06:05:02