说明

pd.merge_ordered() 专门用于有序数据(如时间序列)的合并,与 merge() 类似但结合了前向填充(fill method)功能,适用于处理不等间隔的时间序列连接。

语法

pd.merge_ordered(
    left,                    # 左侧 DataFrame
    right,                   # 右侧 DataFrame
    on=None,                 # 公共有序键(通常是时间)
    left_on=None,            # 左侧键列
    right_on=None,           # 右侧键列
    left_index=False,        # 使用左侧索引作为键
    right_index=False,       # 使用右侧索引作为键
    how='outer',             # 连接方式
    suffixes=('_x', '_y'),   # 重叠列后缀
    fill_method=None,        # 前向填充方法,如 'ffill'
    keep_* = ...             # 其他高级参数(如 keep_...,pandas 2.x)
)

说明

merge_ordered 在 pandas 2.x 中的实参名称建议查阅当前版本帮助:pd.merge_ordered? 以确认最新签名。

参数说明

参数说明默认
left / right待合并的两个 DataFrame-
on公共有序键(通常为日期/数值)None
how连接方式:'left'、'right'、'outer'、'inner''outer'
suffixes重叠列后缀('_x', '_y')
fill_method对合并后结果进行前向填充:'ffill'、'bfill' 或 NoneNone

基础示例

import pandas as pd
 
left = pd.DataFrame({
    'time': pd.to_datetime(['2026-08-01', '2026-08-03', '2026-08-05']),
    'left_val': [1, 2, 3],
})
 
right = pd.DataFrame({
    'time': pd.to_datetime(['2026-08-02', '2026-08-04']),
    'right_val': [10, 20],
})
 
# outer join:保留所有时间点
print(pd.merge_ordered(left, right, on='time'))
#        time  left_val  right_val
# 0 2026-08-01       1.0        NaN
# 1 2026-08-02       NaN       10.0
# 2 2026-08-03       2.0        NaN
# 3 2026-08-04       NaN       20.0
# 4 2026-08-05       3.0        NaN

fill_method:前向填充

说明

合并后自动按有序键前向填充缺失值,是 merge_ordered 的核心特色。

print(pd.merge_ordered(left, right, on='time', fill_method='ffill'))
#        time  left_val  right_val
# 0 2026-08-01       1.0        NaN
# 1 2026-08-02       1.0       10.0   # left_val 前向填充
# 2 2026-08-03       2.0       10.0   # right_val 保持
# 3 2026-08-04       2.0       20.0
# 4 2026-08-05       3.0       20.0

与 merge 的区别

merge_ordered vs merge

  • merge_ordered 要求键有序,合并后在有序键上自动排序。
  • 支持 fill_method 前向填充。
  • 通常用于时间序列的拼接与插值,而非一般表格合并。

与 merge_asof 的区别

merge_ordered vs merge_asof

  • merge_ordered:合并所有键(等值/外连接 + 可选填充)。
  • merge_asof:近似匹配,每个左键只匹配一个最近的右键行。

🔗 相关链接