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

如何在Pandas中将年、月、日形式的服务年限转换为浮点值

解决DataFrame中Years_in_service转十进制年数的问题

完整实现代码

import pandas as pd
import numpy as np

data = {'ID':['A1001','A5001','B1001','D5115','K4910'],
'Years_in_service': ['5 year(s), 7 month(s), 3 day(s)', '16 year(s), 0 month(s), 25 day(s)', 
'7 year(s), 0 month(s), 2 day(s)', '0 year(s), 11 month(s), 23 day(s)','1 year(s), 0 month(s), 6 day(s)'],
 'Age': [45, 59,21,18,35]}

df = pd.DataFrame(data)

# 从字符串中提取年、月、日的数值
df[['years', 'months', 'days']] = df['Years_in_service'].str.extract(r'(\d+) year\(s\), (\d+) month\(s\), (\d+) day\(s\)').astype(float)

# 计算以年为单位的十进制值:年数 + 月数/12 + 天数/365
df['Years_in_service_decimal'] = df['years'] + df['months']/12 + df['days']/365

# 保留两位小数,匹配示例中的5.59格式
df['Years_in_service_decimal'] = df['Years_in_service_decimal'].round(2)

# 输出结果
print(df)

关键步骤说明

  • 数值提取:利用正则表达式精准捕获字符串中的年、月、日数字,通过str.extract直接拆分成三列,再转成浮点类型用于计算。
  • 单位转换:基于一年12个月、一年365天的近似值,把月和天换算成年的小数部分,相加后得到总服务时长的十进制年数。
  • 格式调整:用round(2)把结果保留两位小数,和你提供的示例输出一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 10:25:23