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

多DataFrame补全所有年份索引并填充缺失count值为0

解决方案:补全DataFrame的年份索引并填充缺失值

嘿,这事儿好办!我们只需要两步就能搞定:先收集所有出现过的年份,再让每个DataFrame根据这个完整的年份列表重新索引,缺失的count值自动填0。

步骤1:收集所有唯一的年份

首先,我们把三个DataFrame的索引(也就是year)合并起来,去重后得到所有需要覆盖的年份,还可以给它们排个序看起来更整齐。

步骤2:重新索引每个DataFrame并填充0

用Pandas的reindex()方法,给每个DataFrame传入完整的年份列表,同时指定fill_value=0,这样缺失的年份对应的count就会自动补0啦。

下面是完整的代码示例:

import pandas as pd

# 定义三个原始DataFrame
df1 = {'year': ['2010','2012','2014','2015'], 'count': [1,1,1,1]}
df1 = pd.DataFrame(data=df1).set_index('year')

df2 = {'year': ['2010','2011','2016','2017'], 'count': [2,1,3,1]}
df2 = pd.DataFrame(data=df2).set_index('year')

df3 = {'year': ['2010','2011','2012','2013','2014','2015','2017'], 'count': [4,2,5,4,4,1,1]}
df3 = pd.DataFrame(data=df3).set_index('year')

# 收集所有唯一的年份并排序
all_years = sorted(set(df1.index) | set(df2.index) | set(df3.index))

# 对每个DataFrame重新索引并填充0
df1_complete = df1.reindex(all_years, fill_value=0)
df2_complete = df2.reindex(all_years, fill_value=0)
df3_complete = df3.reindex(all_years, fill_value=0)

# 查看结果
print("补全后的df1:")
print(df1_complete)
print("\n补全后的df2:")
print(df2_complete)
print("\n补全后的df3:")
print(df3_complete)

运行这段代码后,你会得到每个DataFrame都包含了所有年份(2010、2011、2012、2013、2014、2015、2016、2017),缺失的count值都被填充为0,完全符合你的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:30:53