python - 解析具有多种日期格式的 csv 日期

标签 python pandas csv datetime datetime-parsing

我有一个 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文件? 任何帮助将不胜感激。

最佳答案

pandas 中内置的 dateparser 已经足够处理这个问题了,所以只需传递参数 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

关于python - 解析具有多种日期格式的 csv 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45955880/

相关文章:

python - 如何替换pandas中字符串中的非数字或小数

python - 如何在 Python/Pandas 中读取 .csv 文件,其中逗号 (,) 是分隔符并且也出现在列名称中?

linux - 将小于特定阈值的数字替换为零

python - django.db.utils.IntegrityError : duplicate key value violates unique constraint "django_migrations_pkey" 错误

python - "Import Error: DLL load failed"同时使用 pyinstaller 将 ".py file"(具有 "import rasterio")转换为 ".exe file"

python - 迭代数据帧的行,并将多个计算值分配给这些行

java - SuperCSV 的输出不可读?

python - Tkinter -tkinter.TclError

Python 四叉树

python - 比较 Pandas 中的日期范围