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

如何基于DataFrame计算各年份任职人员的平均年龄?

计算指定年份任职人员的平均年龄

实现思路

核心逻辑是针对每个目标年份,筛选出当年处于任职期的人员(即任职起始年≤目标年份≤任职结束年),再计算这些人员的年龄平均值(年龄=目标年份-出生年份),最终整理成年份与平均年龄对应的表格。

代码实现(基于Pandas)

先导入依赖并构建示例数据集:

import pandas as pd

# 示例数据
data = {
    'position': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'C', 'C', 'C', 'C'],
    'year_start': [2021, 2013, 2006, 2002, 1999, 2007, 2003, 2016, 2010, 2007, 2003],
    'year_finish': [2024, 2021, 2012, 2005, 2001, 2024, 2006, 2024, 2015, 2009, 2006],
    'year_birth': [1948, 1945, 1957, 1956, 1935, 1959, 1946, 1955, 1949, 1952, 1927]
}
df = pd.DataFrame(data)

接下来编写计算逻辑:

# 确定要计算的年份范围(从数据中最小任职起始年到最大结束年)
target_years = range(df['year_start'].min(), df['year_finish'].max() + 1)

result_list = []
for year in target_years:
    # 筛选当年在职人员
    active_employees = df[(df['year_start'] <= year) & (df['year_finish'] >= year)]
    # 计算平均年龄,处理无人员的情况
    avg_age = (year - active_employees['year_birth']).mean()
    # 整理结果,保留1位小数
    result_list.append({
        'year(年份)': year,
        'mean age(平均年龄)': round(avg_age, 1) if not pd.isna(avg_age) else None
    })

# 输出Markdown格式的结果表格
result_df = pd.DataFrame(result_list)
print(result_df.to_markdown(index=False))

关键说明

  • 筛选逻辑:(df['year_start'] <= year) & (df['year_finish'] >= year)精准定位当年在职人员
  • 年龄计算:直接用目标年份减去出生年份,逻辑简单清晰
  • 空值处理:若某一年无在职人员,平均年龄标记为None,可根据需求调整为0或其他值

部分结果示例

year(年份)mean age(平均年龄)
199964.0
200065.0
200166.0
200246.0
200342.3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 19:50:22