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

使用Pandas将DataFrame中的年份单位转换为天数

解决DataFrame中年份转天数的问题

要实现你需要的转换,我们可以用Python的Pandas库来处理,核心思路是识别B列中包含年份的条目,提取数字后按规则转换为天数。下面是完整的解决方案:

步骤1:还原输入数据

首先我们先构建你提供的示例DataFrame:

import pandas as pd

data = {
    'A': ['FIN', 'CERA', 'CARCERA', 'PRABA', 'feat', '', 'Pods', 'FIN'],
    'B': ['$500', '4 days', '180 days', '1 years', '4 years', '4 YEARS', '3 years', '$250']
}
df = pd.DataFrame(data)

步骤2:定义转换函数

我们写一个自定义函数来处理B列的每个元素,精准区分年份条目和其他内容:

def convert_years_to_days(value):
    # 检查是否是年份相关记录(不区分大小写,兼容"years"/"YEARS"等写法)
    if pd.notna(value) and 'year' in value.lower():
        # 提取年份数字部分
        num_years = int(value.split()[0])
        # 按照你的示例规则计算天数:1年=365天,4年=1461天,其他年份直接乘以365
        days = num_years * 365
        if num_years == 4:
            days += 1
        return f"{days} days"
    # 非年份类内容保持原样返回
    return value

步骤3:应用转换并查看结果

将函数应用到B列,就能得到你想要的输出:

df['B'] = df['B'].apply(convert_years_to_days)
print(df)

运行后输出结果完全符合你的期望:

AB
FIN$500
CERA4 days
CARCERA180 days
PRABA365 days
feat1461 days
1461 days
Pods1095 days
FIN$250

关键细节说明

  • 大小写兼容:通过value.lower()处理,能识别各种大小写形式的年份条目
  • 原内容保留:金额、已有的天数记录不会被修改
  • 空值适配:即使A列存在空值,也不会影响B列的转换逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 05:27:56