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

使用Pandas计算各岗位首尾年度平均薪资差值

问题

我有一份包含过去三年岗位名称与薪资的数据集,已生成各年度平均薪资的DataFrame(如下所示),需要针对每个岗位,计算2022年平均薪资减去2020年平均薪资的差值,遍历所有岗位完成计算,请问如何用Pandas实现?

work_year                   job_title  salary_in_usd
0        2020                AI Scientist   45896.000000
1        2020             BI Data Analyst   98000.000000
2        2020           Big Data Engineer   97690.333333
3        2020       Business Data Analyst  117500.000000
4        2020    Computer Vision Engineer   60000.000000
..        ...                         ...            ...
93       2022  Machine Learning Scientist  141766.666667
94       2022                NLP Engineer   37236.000000
95       2022      Principal Data Analyst   75000.000000
96       2022    Principal Data Scientist  162674.000000
97       2022          Research Scientist  105569.000000

解决方案

方法一:使用透视表重塑数据

利用pivot_table将数据转换为“岗位-年度”的二维结构,直接计算差值:

import pandas as pd

# 假设你的DataFrame变量名为df
# 生成透视表:行是岗位,列是年份,值为对应年度的平均薪资
pivot_df = df.pivot_table(
    index='job_title',
    columns='work_year',
    values='salary_in_usd',
    aggfunc='first'  # 因数据已是年度平均,直接取对应值即可
)

# 计算2022年与2020年的薪资差值
pivot_df['salary_diff_2022_2020'] = pivot_df[2022] - pivot_df[2020]

# 提取岗位和差值列,重置索引得到最终结果
result = pivot_df[['salary_diff_2022_2020']].reset_index()
print(result)

方法二:分组后展开数据

通过groupby分组后用unstack转换结构,再计算差值:

# 按岗位和年份分组,提取对应年度的平均薪资
grouped = df.groupby(['job_title', 'work_year'])['salary_in_usd'].first().unstack()

# 计算薪资差值
grouped['salary_diff_2022_2020'] = grouped[2022] - grouped[2020]

# 整理结果格式
result = grouped.reset_index()[['job_title', 'salary_diff_2022_2020']]
print(result)

处理缺失数据

如果部分岗位缺少2020或2022年的数据,差值会显示为NaN,可按需处理:

  • 填充缺失值为0:
result = result.fillna({'salary_diff_2022_2020': 0})
  • 过滤掉存在缺失值的岗位:
result_clean = result.dropna(subset=['salary_diff_2022_2020'])

内容的提问来源于stack exchange,提问作者Jean-Paul Azzopardi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 00:56:04