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

如何为pandas DataFrame缺失年份添加空值行以适配多折线图绘制

Pandas补全国家缺失年份行的实现方法

你可以直接用pandas内置的索引重排功能实现需求,不需要额外安装工具,核心逻辑是生成所有国家+所有年份的全量组合,再和原数据匹配即可,代码示例如下:

import pandas as pd

# 假设你从SQL导入的原始DataFrame命名为df
# 1. 取全局年份的最小、最大值生成完整年份序列
min_year = df['date'].min()
max_year = df['date'].max()
full_years = range(min_year, max_year + 1)

# 2. 取所有唯一国家列表
countries = df['country'].unique()

# 3. 生成国家+年份的全组合,匹配原数据后重置索引,缺失值自动填充为NaN
result_df = df.set_index(['country', 'date'])\
              .reindex(pd.MultiIndex.from_product([countries, full_years], names=['country', 'date']))\
              .reset_index()

如果你需要把缺省的NaN替换为其他默认值(比如0),只需要在reindex()方法后追加.fillna(0)即可。

如果更习惯用表关联的逻辑实现,也可以用下面的写法,效果完全一致:

# 生成全量国家年份维度表
dim_df = pd.MultiIndex.from_product(
    [df['country'].unique(), range(df['date'].min(), df['date'].max()+1)],
    names=['country', 'date']
).to_frame(index=False)

# 左关联原始数据得到补全结果
result_df = dim_df.merge(df, on=['country', 'date'], how='left')

两种方法都可以自动适配你当前数据里的年份区间,不需要手动调整参数,对于你只有6个国家的场景,执行效率没有任何差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 12:06:03