如何清理DataFrame日期列前缀字符并转换为datetime类型
处理带前缀的日期列并转换为datetime类型
问题场景
从API获取的DataFrame中,date列存在file_、test_这类前缀,直接用pd.to_datetime()转换会报错,需要先清理前缀再转为标准日期格式。
解决方案
分两步处理:先清理日期字符串的前缀,再转换为datetime类型。
方法1:按下划线分割取最后部分
适合前缀统一以_结尾的情况:
# 分割字符串并提取最后一段(即纯日期部分) df['date'] = df['date'].str.split('_').str[-1] # 转换为datetime类型 df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d-%H:%M:%S')
方法2:正则提取日期格式内容
如果前缀格式不固定,用正则精准匹配YYYY-MM-DD-HH:MM:SS格式的内容更稳妥:
# 正则提取符合日期格式的子串 df['date'] = df['date'].str.extract(r'(\d{4}-\d{2}-\d{2}-\d{2}:\d{2}:\d{2})')[0] # 转换为datetime类型 df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d-%H:%M:%S')
验证结果
处理后date列会变为标准的datetime类型(若不需要转换类型,可跳过第二步保留纯日期字符串),最终DataFrame如下:
date Language session 0 2022-12-14 03:15:26 English Morning 1 2022-12-15 13:13:30 French Afternoon 2 2022-12-14 05:10:16 Spanish Morning 3 2022-12-14 10:08:26 Chinese Morning
报错原因
直接调用pd.to_datetime()时,带file_、test_前缀的字符串不符合默认的日期解析格式,导致解析失败,必须先清理非日期字符再转换。
内容的提问来源于stack exchange,提问作者JackJack
相关产品推荐
相关产品推荐

