如何用Pandas将含多余字符的CSV时间列转换为datetime对象
Pandas解析带多余末尾字符的时间字符串解决方案
你的问题在于原解析器硬编码了时间字符串末尾为0,当末尾出现其他字符时匹配失败。解决思路是先截断时间字符串的最后一位字符,再用标准的微秒格式解析:
修改后的myparser函数如下:
def myparser(x): # 去掉时间字符串最后一位多余字符 trimmed_time = x[:-1] # 按标准格式解析,%f对应6位微秒 return pd.to_datetime(trimmed_time, format='%Y%m%d %H%M%S %f')
代码说明
- 原时间字符串的最后一部分是7位(比如
7579480或7106549),x[:-1]会截取前6位(757948或710654),正好符合%f(6位微秒)的格式要求。 - 这种方式不依赖末尾字符的具体值,不管是0还是其他数字都能兼容,直接丢弃多余的最后一位。
验证示例
对于两种时间字符串:
20220904 182409 7579480→ 截断后为20220904 182409 757948,解析为2022-09-04 18:24:09.75794820220904 182409 7106549→ 截断后为20220904 182409 710654,解析为2022-09-04 18:24:09.710654
都能正常转换为datetime对象。
内容的提问来源于stack exchange,提问作者Sh K
相关产品推荐
相关产品推荐

