如何对Pandas DataFrame中重复年份的统计列求均值合并?
解决方法
要合并重复年份的行并对统计列求均值,同时确保覆盖1970-2022所有年份,可按以下步骤操作:
1. 按年份分组计算均值
使用Pandas的groupby按year列分组,对所有统计列(stat1至statn)批量计算均值:
import pandas as pd # 获取所有统计列(自动排除year列) stat_columns = df.columns.drop('year') # 分组求均值,重置索引让year回到列位置 grouped_df = df.groupby('year')[stat_columns].mean().reset_index()
2. 补全缺失年份
由于部分年份可能因数据缺失被删除,需要生成完整的年份序列,通过左连接确保每个年份都存在一行:
# 生成1970到2022的完整年份列表 full_year_range = pd.DataFrame({'year': range(1970, 2023)}) # 左连接补全年份,缺失年份的统计值会显示为NaN final_df = full_year_range.merge(grouped_df, on='year', how='left')
补充说明
groupby('year').mean()会自动忽略每组内的NaN值,仅对有效数值计算均值,适合处理缺失数据场景。- 用
df.columns.drop('year')批量获取统计列,无需手动罗列大量列名,适配大型DataFrame操作。 - 1970到2022总计53个年份,最终
final_df会有53行;若你需要52行,请检查年份范围是否应为1971-2022。
内容的提问来源于stack exchange,提问作者Jonah Arrasmith
相关产品推荐
相关产品推荐

