Pandas在日期上的条件

2024-04-23 19:32:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图计算“2019-12-31”起的任期(以月为单位)

为此,我创建了一个新列LatestEmploymentDate(键入datetime64[ns]),如果他们没有退出,则默认为“2019-12-31”。如果员工的雇佣关系已结束,则该值将为EmploymentEndDate(键入datetime64[ns])

df_employee1['LatestEmploymentDate'] = pd.to_datetime('2019-12-31')
df_employee1.loc[df_employee1['LatestEmploymentDate'] != pd.to_datetime('2019-12-31'), 'LatestEmploymentDate'] \
= df_employee1['EmploymentEndDate']
print(df_employee1[['LatestEmploymentDate','EmploymentEndDate'] ])

这是打印结果

   LatestEmploymentDate EmploymentEndDate
0              2019-12-31               NaT
1              2019-12-31               NaT
2              2019-12-31        2019-03-08
3              2019-12-31               NaT
4              2019-12-31               NaT
...                   ...               ...
1996           2019-12-31        2019-12-17
1997           2019-12-31               NaT
1998           2019-12-31               NaT
1999           2019-12-31               NaT
2000           2019-12-31               NaT

填充时,LatestEmploymentDate不等于EmploymentEndDate。有人能告诉我我的逻辑有什么问题吗

谢谢你的帮助


Tags: todfdatetime键入关系员工单位nat
1条回答
网友
1楼 · 发布于 2024-04-23 19:32:32

你能试试这个吗

df_employee1['LatestEmploymentDate'] = pd.to_datetime('2019-12-31')
df_employee1.loc[df_employee1['EmploymentEndDate'].isna()!=True, 'LatestEmploymentDate'] = df_employee1['EmploymentEndDate']
print(df_employee1[['LatestEmploymentDate','EmploymentEndDate'] ])

Result

相关问题 更多 >