使用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)
运行后输出结果完全符合你的期望:
| A | B |
|---|---|
| FIN | $500 |
| CERA | 4 days |
| CARCERA | 180 days |
| PRABA | 365 days |
| feat | 1461 days |
| 1461 days | |
| Pods | 1095 days |
| FIN | $250 |
关键细节说明
- 大小写兼容:通过
value.lower()处理,能识别各种大小写形式的年份条目 - 原内容保留:金额、已有的天数记录不会被修改
- 空值适配:即使A列存在空值,也不会影响B列的转换逻辑
内容的提问来源于stack exchange,提问作者shabu shankar
相关产品推荐
相关产品推荐

