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

如何从CSV计算员工日期差值?含空值填充与统计需求

员工在职天数计算与统计解决方案

问题分析

你的代码未生效主要有两个核心原因:

  1. fillna 默认不会修改原DataFrame,必须赋值回原列或使用 inplace=True 才会生效
  2. 日期列若为字符串类型无法直接计算差值,需先转换为datetime格式

完整实现步骤

  • 1. 导入依赖并读取数据
    读取CSV文件时,同步将日期列转换为datetime类型(注意你的日期格式是日/月/年,需指定format参数匹配):

    import pandas as pd
    
    # 读取员工数据CSV
    df = pd.read_csv('你的员工数据文件名.csv')
    
    # 转换入职、离职日期为datetime类型
    df['JoinDate'] = pd.to_datetime(df['JoinDate'], format='%d/%m/%Y')
    df['LeftDate'] = pd.to_datetime(df['LeftDate'], format='%d/%m/%Y')
    
  • 2. 填充离职日期空值
    将空的LeftDate填充为2022年5月1日,确保修改原数据列:

    # 填充空值为指定日期
    df['LeftDate'] = df['LeftDate'].fillna(pd.to_datetime('1/05/2022', format='%d/%m/%Y'))
    
  • 3. 计算每位员工在职天数
    通过日期差值得到整数天数,存入新列TenureDays:

    # 计算在职天数
    df['TenureDays'] = (df['LeftDate'] - df['JoinDate']).dt.days
    
  • 4. 统计核心指标
    计算总天数、平均天数、最小/最大天数:

    # 统计关键指标
    total_tenure = df['TenureDays'].sum()
    avg_tenure = df['TenureDays'].mean()
    min_tenure = df['TenureDays'].min()
    max_tenure = df['TenureDays'].max()
    
    # 打印结果
    print(f"总在职天数:{total_tenure}")
    print(f"平均在职天数:{avg_tenure:.2f}")
    print(f"最短在职天数:{min_tenure}")
    print(f"最长在职天数:{max_tenure}")
    

额外注意事项

  • 若CSV中日期格式不是日/月/年,需调整format参数(比如%m/%d/%Y对应月/日/年)
  • 若存在离职日期早于入职日期的错误数据,可通过df['TenureDays'] = df['TenureDays'].clip(lower=0)过滤负数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 09:36:20