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

Python中如何按特定年份分组并计算区域平均年龄?

针对特定年份分组计算区域平均年龄的解决方案

嗨,你已经把基础的分组聚合逻辑跑通了,很棒!要只针对特定年份来做这个统计,有两种实用的方式,看你更适合哪种场景:

方法一:先筛选特定年份的数据,再分组聚合

这种方法更高效,因为先把范围缩小到目标年份,减少后续分组处理的数据量。假设你想统计2022年的区域平均年龄,代码可以这么写:

# 1. 先筛选出目标年份的数据
target_year = 2022
filtered_data = data[data['Date'].dt.year == target_year]

# 2. 按区域分组计算平均年龄,同时手动补充year列
ageDataFrame = filtered_data.groupby('Region').agg(
    average_age=('age', 'mean'),
    year=lambda x: target_year
).reset_index()

# 调整列顺序为你需要的region、year、average age
ageDataFrame = ageDataFrame[['Region', 'year', 'average_age']].rename(columns={'average_age': 'average age'})

这样得到的结果就只包含2022年各区域的平均年龄,完全匹配你想要的列结构。

方法二:先全量分组,再提取特定年份的结果

如果你已经生成了全年份的分组结果,或者需要保留全量数据的同时单独提取某一年,用这种方法更方便:

# 先按区域和年份完成全量分组聚合
ageDataFrame_full = data.groupby(['Region', data.Date.dt.year]).agg(
    average_age=('age', 'mean')
).reset_index()

# 提取目标年份(比如2023年)的数据
target_year = 2023
ageDataFrame_target = ageDataFrame_full[ageDataFrame_full['Date'] == target_year]

# 整理列名和顺序
ageDataFrame_target = ageDataFrame_target.rename(columns={'Date': 'year', 'average_age': 'average age'})

或者用xs方法直接从多级索引结果中提取,写法更简洁:

ageDataFrame_full = data.groupby(['Region', data.Date.dt.year]).agg(average_age=('age', 'mean'))
ageDataFrame_target = ageDataFrame_full.xs(target_year, level=1).reset_index()
ageDataFrame_target['year'] = target_year
ageDataFrame_target = ageDataFrame_target[['Region', 'year', 'average_age']].rename(columns={'average_age': 'average age'})

小优化:简化聚合函数写法

你原来的嵌套字典写法可以更简洁,直接用元组指定列和聚合方法,可读性更强:

# 替代原来的ageAverage定义
ageDataFrame = data.groupby(['Region', data.Date.dt.year]).agg(
    average_age=('age', 'mean')
).reset_index()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:39:56