如何将数字格式时间转换为高频时间格式?pd.to_datetime报错求助
解决连续时间字符串转指定格式的问题
错误原因
你传入的091504000是无分隔符的9位连续字符串,但你指定的%H:%M:%S,%f格式要求输入必须是HH:MM:SS,ffffff这种带冒号、逗号的结构,两者格式不匹配,因此报错。
解决方法
有两种可行的处理方式:
方法1:直接用对应格式解析连续字符串
利用pd.to_datetime直接解析无分隔符的时间字符串,指定匹配连续结构的格式%H%M%S%f,再转成目标格式:
import pandas as pd # 解析连续时间字符串为datetime类型 df['MDTime'] = pd.to_datetime(df['MDTime'], format='%H%M%S%f') # 转换为09:15:04.000格式的字符串 df['MDTime_formatted'] = df['MDTime'].dt.strftime('%H:%M:%S.%f').str[:-3]
注:%f对应6位微秒,通过str[:-3]截取前12位,保留三位毫秒。
方法2:先插入分隔符再解析
先手动给连续字符串插入分隔符,匹配你最初使用的格式要求,再进行转换:
import pandas as pd # 给连续字符串插入冒号和逗号,格式化为HH:MM:SS,fff df['MDTime_processed'] = df['MDTime'].str[:2] + ':' + df['MDTime'].str[2:4] + ':' + df['MDTime'].str[4:6] + ',' + df['MDTime'].str[6:] # 解析为datetime类型 df['MDTime'] = pd.to_datetime(df['MDTime_processed'], format='%H:%M:%S,%f') # 转换为目标格式 df['MDTime_formatted'] = df['MDTime'].dt.strftime('%H:%M:%S.%f').str[:-3]
内容的提问来源于stack exchange,提问作者jiaqian Zhang
相关产品推荐
相关产品推荐

