我有一个csv文件,其中包含多种格式的日期,如下所示:
Date X1 X2
12/6/2017 23:00 928.88 3.19
12/6/2017 23:20 928.86 3.37
12/6/2017 23:40 930.26 3.38
13-06-17 0:00 930.37 3.41
13-06-17 0:20 930.39 3.49
13-06-17 0:40 930.15 3.54
13-06-17 1:00 930.36 3.46
我想解析日期,但格式不同:
我试过了:
date_formats = ["%d /%m /%Y%H:%M","%d-%m-%Y%H:%M"]
for x in date_formats:
try:
dateparse = lambda dates: datetime.strptime(dates, x)
except ValueError:
dateparse = lambda dates: datetime.strptime(dates, x)
df2 = read_csv("Copy.csv", parse_dates=True,
index_col="Time", date_parser=dateparse)
但我收到格式错误。
ValueError: time data '5/6/2017 0:00' does not match format '%d-%m-%Y %H:%M'
还有其他方法可以解析csv文件的不同日期格式吗? 任何帮助将不胜感激。
答案 0 :(得分:3)
pandas
中的内置日期分析器已经足够处理这个问题了,所以只需传递param parse_dates=[0]
告诉read_csv
将第一列解析为日期时间,另外你需要传递dayfirst=True
:
In[19]:
import pandas as pd
import io
t="""Date,X1,X2
12/6/2017 23:00,28.88,3.19
12/6/2017 23:20,928.86,3.37
12/6/2017 23:40,930.26,3.38
13-06-17 0:00,930.37,3.41
13-06-17 0:20,930.39,3.49
13-06-17 0:40,930.15,3.54
13-06-17 1:00,930.36,3.46"""
df = pd.read_csv(io.StringIO(t), parse_dates=['Date'], dayfirst=True)
df
Out[19]:
Date X1 X2
0 2017-06-12 23:00:00 28.88 3.19
1 2017-06-12 23:20:00 928.86 3.37
2 2017-06-12 23:40:00 930.26 3.38
3 2017-06-13 00:00:00 930.37 3.41
4 2017-06-13 00:20:00 930.39 3.49
5 2017-06-13 00:40:00 930.15 3.54
6 2017-06-13 01:00:00 930.36 3.46