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

Pandas DataFrame按日期合并后如何对指定列NaN值前向填充到特定日期

Pandas指定日期范围内前向填充空值实现方法

前置准备

首先需确保date列转换为Pandas datetime类型,避免字符串日期比较出现匹配错误:

import pandas as pd

# 示例数据构造(可直接复现)
df_1 = pd.DataFrame({
    'date': ['01/12', '02/12', '03/12', '04/12', '05/12', '06/12', '07/12'],
    'value1': [10, 20, 30, 40, 60, 70, 80]
})
df_2 = pd.DataFrame({
    'date': ['01/12', '03/12', '05/12'],
    'value2': [100, 300, 500]
})

# 左连接合并
df = pd.merge(df_1, df_2, how='left', on=['date'])

# 转换日期格式,指定格式为日/月
df['date'] = pd.to_datetime(df['date'], format='%d/%m')

核心实现代码

仅对05/12及之前的value2空值做前向填充,后续空值保留:

# 设定填充截止日期
cutoff_date = pd.to_datetime('05/12', format='%d/%m')
# 筛选截止日期前的行执行前向填充,仅赋值给对应范围的行
df.loc[df['date'] <= cutoff_date, 'value2'] = df.loc[df['date'] <= cutoff_date, 'value2'].ffill()

处理结果

执行后输出符合需求:

datevalue1value2
1900-12-01 00:00:0010100.0
1900-12-02 00:00:0020100.0
1900-12-03 00:00:0030300.0
1900-12-04 00:00:0040300.0
1900-12-05 00:00:0060500.0
1900-12-06 00:00:0070NaN
1900-12-07 00:00:0080NaN

如果需要还原日期为字符串格式,处理完成后可执行转换:

df['date'] = df['date'].dt.strftime('%d/%m')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:06:00