如何读取含毫秒级时间戳(DD.MM.YYYY hh:mm:ss:mmm)的CSV文件?
解决pandas read_csv无法解析带冒号分隔毫秒的日期格式问题
你的日期格式为DD.MM.YYYY HH:MM:SS:fff,由于毫秒部分用冒号而非标准小数点分隔,导致pandas默认解析器无法识别,最终索引为object类型。以下两种方法可以解决这个问题:
方法一:指定自定义日期解析函数
通过date_parser参数传入自定义函数,先将毫秒前的冒号替换为小数点,再按标准格式解析:
import pandas as pd from datetime import datetime def parse_date(date_str): # 仅替换最后一个冒号为小数点 formatted_str = date_str.replace(':', '.', 2) return datetime.strptime(formatted_str, '%d.%m.%Y %H:%M:%S.%f') testdf = pd.read_csv( 'test.csv', index_col=0, header=0, parse_dates=True, dayfirst=True, date_parser=parse_date )
方法二:直接指定日期格式字符串
利用date_format参数直接匹配你的日期格式,无需额外函数:
import pandas as pd testdf = pd.read_csv( 'test.csv', index_col=0, header=0, parse_dates=True, dayfirst=True, date_format='%d.%m.%Y %H:%M:%S:%f' )
执行上述任意一种方法后,查看索引类型:
print(testdf.index)
会得到预期的*datetime64[ns]*类型的DatetimeIndex:
DatetimeIndex(['2019-03-18', '2019-06-19', '2019-09-10', '2019-12-16'], dtype='datetime64[ns]', name='date', freq=None)
内容的提问来源于stack exchange,提问作者JC_CL
相关产品推荐
相关产品推荐

