Python Datetime的%d部分解析异常问题求助
问题解决思路
错误原因
你用错了datetime.datetime()的用法:这个函数是用来构造日期时间对象的,需要传入年、月、日等整数参数,而你直接把字符串和格式符传进去,它会把第一个字符串参数当成年份整数来解析,自然就抛出'str' object cannot be interpreted as an integer的错误。
另外,你的时间字符串包含毫秒部分(比如示例里的:7),原格式符%y:%m:%d %H:%M:%S没覆盖这部分,也会导致解析失败。
正确解法
1. 单行解析(修正datetime用法)
用datetime.strptime()来解析字符串格式的时间,这才是专门用来把字符串转成datetime对象的方法:
import datetime # 取某一行的时间字符串 date_str = df['RunStartTime'][row] # 格式符加上:%f匹配毫秒部分(%f会自动补零适配一位毫秒) dt_obj = datetime.datetime.strptime(date_str, "%y:%m:%d %H:%M:%S:%f") # 提取日期部分 date = dt_obj.date()
2. 整列批量处理(推荐用Pandas自带方法)
没必要循环每行处理,用Pandas的to_datetime()可以高效处理整列数据:
import pandas as pd # 把整列转成datetime类型 df['RunStartTime'] = pd.to_datetime(df['RunStartTime'], format="%y:%m:%d %H:%M:%S:%f") # 单独提取日期列 df['RunDate'] = df['RunStartTime'].dt.date
内容的提问来源于stack exchange,提问作者cszynkowski
相关产品推荐
相关产品推荐

