看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
在薪酬和福利管理中,计算员工的“司龄”即员工在公司工作的年限,通常用于确定员工的年资、工龄奖、福利发放、绩效考核等。我们来看看如何用 pandas 来入职日期和工资月份计算司龄,用于计算员工的工龄奖。
我们构造数据如下:
import pandas as pd
import io
data = '''
工资月份 入职日期
2024-10-31 2022-12-09
2024-10-31 2016-10-17
2024-10-31 2022-06-01
2024-10-31 2024-04-15
2024-10-31 2022-03-14
2024-10-31 2018-10-08
2024-10-31 2023-02-01
2024-10-31 2020-03-23
'''
df = pd.read_csv(io.StringIO(data), sep=r'\s+')
df
# ...
我们要根据入职日期减去工资月份来计算员工在公司多少年,保留两个小数。
主要思路是计算员工的司龄(工作年限),通过以下几个步骤来实现:
eval
计算出工资月份与入职日期之间的时间差(即员工在公司工作的总时长),得到一个时间间隔类型的结果。简化了司龄的计算,将日期差异直接转换为工作年限,使得结果更为直观。
根据思路,最终的代码如下:
(
df.astype({'工资月份': 'datetime64[ns]',
'入职日期': 'datetime64[ns]'})
.eval('工资月份 - 入职日期')
# 365.25 是平均的一年天数,考虑了平年和闰年
.div(pd.Timedelta(days=365.25))
.round(2)
)
'''
0 1.89
1 8.04
2 2.42
3 0.54
4 2.63
5 6.06
6 1.75
7 4.61
dtype: float64
'''
这样就得到了最终的结果。
(完)
更新时间:2024-11-07 17:29:26 标签:pandas python 工资 司龄