Python转换DataFrame日期列 按疫苗类型为接种日期添加对应天数
实现步骤
pandas内置了向量化的日期处理能力,无需手动遍历列元素即可完成需求,实现逻辑如下:
- 第一步:将字符串格式的接种日期列转换为pandas datetime类型
代码:# 显式指定格式避免解析异常,如确认所有日期都是YYYY-MM-DD格式也可以省略format参数 df['接种日期'] = pd.to_datetime(df['接种日期'], format='%Y-%m-%d') - 第二步:定义疫苗种类与待加天数的映射关系
你可以根据实际需求调整下方字典的键值:vaccine_day_map = { "灭活疫苗": 21, "重组蛋白疫苗": 14, "腺病毒载体疫苗": 0 } - 第三步:生成计算后的日期列
直接通过pandas内置的时间增量方法完成计算,比for循环效率高100倍以上,且不会出现遍历引发的类型错误:# 按疫苗种类匹配天数,转换为时间增量后和接种日期相加 df['计算后日期'] = df['接种日期'] + pd.to_timedelta(df['疫苗种类'].map(vaccine_day_map), unit='D') # 如需要输出为YYYY-MM-DD格式的字符串,可加下方代码 df['计算后日期'] = df['计算后日期'].dt.strftime('%Y-%m-%d')
你之前写for循环报错的核心原因大概率是直接对字符串格式的日期做加法,或者遍历取值时类型不匹配,上述方法完全可以替代手动遍历逻辑。
内容的提问来源于stack exchange,提问作者José Goulart
相关产品推荐
相关产品推荐

