如何基于已有日期将DataFrame中NaT替换为后续递增的月度日期?
实现代码
首先确认日期列已转为datetime类型,后续用pandas原生方法处理即可:
import pandas as pd # 示例DataFrame构造,实际使用时替换为你自己的df df = pd.DataFrame({ 'column1': pd.to_datetime(['2020-11-01', '2020-12-01', '2021-01-01', pd.NaT, pd.NaT, pd.NaT]), 'column2': [1,2,3,4,5,6] }) # 取最后一个有效日期 last_valid = df['column1'].dropna().iloc[-1] # 统计待填充的空值数量 na_num = df['column1'].isna().sum() # 生成逐月递增的月初日期序列 fill_dates = pd.date_range(last_valid + pd.DateOffset(months=1), periods=na_num, freq='MS') # 填充空值 df.loc[df['column1'].isna(), 'column1'] = fill_dates
说明
- 用
pd.DateOffset(months=1)处理月度偏移,无需手动计算年月,自动规避跨年、闰年等边界问题 freq='MS'强制生成每月1号的日期,完全匹配仅年月递增、日期固定为1号的需求- 全量使用pandas向量化操作,无循环遍历,符合Python数据分析领域的常规实现风格,性能优于逐行处理方案
内容的提问来源于stack exchange,提问作者Tmiskiewicz
相关产品推荐
相关产品推荐

