读取包含非标准时间戳列的大型csv文件

2021-10-17 18:07:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图读取一个包含如下数据的csv文件:

data.csv:

time,value
12/31/2015 7:00:00 PM,275.9271
12/31/2015 7:00:02 PM,278.559
12/31/2015 7:00:10 PM,277.5949
12/31/2015 7:00:12 PM,270.0564

我的问题是有很多数据,如果我试图读取文件,同时告诉读者解析时间列,如:

df = pd.read_csv('data.csv', parse_dates = ['time'])

它非常慢。另一方面,如果我读取数据,然后尝试转换时间列,速度也很慢:

df['time'] = pd.to_datetime(df.time)

环顾网络之后,解决方案似乎是指定时间的格式,但这失败了,因为月份和小时缺少零填充:

pd.to_datetime(df.time,format='%b/%d/%Y %H:%M:%S %p')

ValueError: time data '10/26/2016 7:00:01 PM' does not match format '%b/%d/%Y %H:%M:%S %p' (match)

有没有办法使格式字符串与非标准数据相匹配?或者加速一种自动识别方法?谢谢您!你知道吗