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

如何检测并向Pandas DataFrame添加缺失月份的行以补全数据?

补全DataFrame中缺失的月份行

需求说明

你的DataFrame缺少5月数据,需要补全该行,让最终结果包含1-12月所有月份,且YEAR1、YEAR2保持和其他行一致的2020、2019。

方法一:生成完整月份序列合并补全

适合批量补全多个缺失月份的场景,步骤清晰易扩展:

  1. 生成包含1-12月的完整模板DataFrame
  2. 与原数据合并,自动填充缺失月份的年份值
import pandas as pd

# 原数据
data = {'YEAR1': [2020]*11, 'YEAR2': [2019]*11, 'MONTH': [1,2,3,4,6,7,8,9,10,11,12]}  
df = pd.DataFrame(data)

# 生成1-12月的完整月份模板
full_months = pd.DataFrame({'MONTH': range(1,13)})
# 按月份合并,用前向填充补全年份(因所有行年份值一致,填充逻辑通用)
df_full = full_months.merge(df, on='MONTH', how='left').ffill()

# 重置索引(可选,让结果更规整)
df_full = df_full.reset_index(drop=True)
print(df_full)

运行后会得到包含所有月份的完整DataFrame,缺失的5月会自动补全YEAR1=2020、YEAR2=2019。

方法二:手动查找缺失月份并添加行

如果仅缺失单个月份,这种方式更直接:

import pandas as pd

data = {'YEAR1': [2020]*11, 'YEAR2': [2019]*11, 'MONTH': [1,2,3,4,6,7,8,9,10,11,12]}  
df = pd.DataFrame(data)

# 定位缺失的月份
existing_months = df['MONTH'].tolist()
missing_month = [m for m in range(1,13) if m not in existing_months][0]

# 构造缺失行并添加到原数据
new_row = pd.DataFrame({'YEAR1': [2020], 'YEAR2': [2019], 'MONTH': [missing_month]})
df_full = pd.concat([df, new_row], ignore_index=True)

# 按月份排序并重置索引
df_full = df_full.sort_values('MONTH').reset_index(drop=True)
print(df_full)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:15:40