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

如何为DataFrame缺失日期单元格赋值(基于当月首日)

解决DataFrame日期列缺失值填充问题

核心思路

先从日期列的非空值中提取目标月份信息,生成当月首日(或直接取列中任意有效同月份日期),再批量填充所有缺失单元格。

具体实现步骤

  1. 转换日期列格式
    确保日期列为datetime类型,方便后续处理:
import pandas as pd
df['日期'] = pd.to_datetime(df['日期'], errors='coerce')
  1. 获取目标月份基准日期
    由于每个文件仅含单月数据,且必有非空日期,直接提取第一个非空日期的年月,生成当月首日:
# 提取第一个非空日期的年月周期
target_month = df['日期'].dropna().iloc[0].to_period('M')
# 转为当月首日的datetime对象
month_first_day = target_month.to_timestamp()

若不需要首日,只想用列中已有的任意同月份日期,可直接取第一个非空值:

base_date = df['日期'].dropna().iloc[0]
  1. 填充缺失值
    用基准日期批量填充所有空值:
# 填充当月首日
df['日期'] = df['日期'].fillna(month_first_day)
# 或填充列中已有同月份日期
# df['日期'] = df['日期'].fillna(base_date)

示例验证

假设原始DataFrame如下:

data = {'日期': [pd.NA, '2023-08-12', pd.NA, '2023-08-25'], '销售额': [100, 200, 150, 300]}
df = pd.DataFrame(data)

处理后日期列的空值会被填充为2023-08-01,非空值保持不变。

为什么fillna(method='ffill')不适用?

ffill是向前填充逻辑,仅能从已填充的前序单元格取值。如果首行日期为空,后续单元格没有可继承的有效值,自然无法完成填充。而先提取基准日期再批量填充的方式,不受空值位置影响,能覆盖所有缺失场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 10:45:37