如何在Python Pandas中按条件校验指定格式字符串并转换为日期
实现代码
import pandas as pd # 构造示例DataFrame,若你的col1是数值类型,先执行 df['col1'] = df['col1'].astype(str) 转成字符串 df = pd.DataFrame({'col1': ['20002211', '19980515']}) # 校验月份,不符合规则的替换为19000102 df['col1'] = df['col1'].where( df['col1'].str.slice(4, 6).astype(int).between(1, 12), '19000102' ) # 转换为日期格式,最终col1为datetime64类型 df['col1'] = pd.to_datetime(df['col1'], format='%Y%m%d') # 若需要输出为字符串格式的yyyy-mm-dd,可取消注释下面这行 # df['col1'] = df['col1'].dt.strftime('%Y-%m-%d')
结果验证
执行后输出的df内容如下:
col1 0 1900-01-02 1 1998-05-15
逻辑说明
- 用
str.slice(4,6)截取col1字符串的第5、6位,对应规则中的月份字段 - 通过
between(1,12)判断月份是否在合法范围内,不满足条件的值统一替换为19000102 - 最后通过
pd.to_datetime指定%Y%m%d格式,将字符串转换为Pandas标准日期类型
内容的提问来源于stack exchange,提问作者dingaro
相关产品推荐
相关产品推荐

