【问题标题】:Python / Pandas - Parsing Date-Time-Formats using dateparser different LocalesPython / Pandas - 使用 dateparser 不同的语言环境解析日期时间格式
【发布时间】:2022-01-27 14:58:12
【问题描述】:

这是我在这里的第一篇文章,因此也感谢有关如何更好地传达我的问题的反馈。

基本上我想在 .csv 文件的文件夹上应用日期解析器。问题是:文件可以包含不同的数据时间格式(语言环境)。

我选择了 dateparser,因为它可以“开箱即用”处理不同的语言环境。 文件中的语言环境有:德语、英语、法语、意大利语、西班牙语、瑞典语、波兰语和荷兰语。 单个文件只有一种不同的日期格式。文件一是德语,文件二是英文,依此类推。

我几乎可以使用 dateparser 来完成这项工作,但由于某种原因,它会破坏德语日期,其他文件的处理没有问题。 01.08.2021(应为 8 月 1 日,变为 1 月 8 日)

Sample-Dates(结构中均为 DD/MM/YYYY HH/MM/SS)

uk = "31 Jul 2021 23:07:35"
fr = "31 juil. 2021 22:36:38"
it = "31 lug 2021 22:14:56"
es = "31 jul. 2021 22:08:08"
de = "01.08.2021 22:15:54"
se = "2 jan. 2022 07:12:44"
nl = "31 jul. 2021 22:04:02"
pl = "2 lis 2021 08:27:54"

我的代码:

import os, dateparser, pandas as pd

dateien = []

marketplaces = []

quelle = "CSVs/header_inject/"

counter = 0

for subdir, dirs, files in os.walk(quelle):
    for file in files:
        dateien.append(file)

for input_file in dateien:
    df = pd.read_csv(quelle+input_file, header=0, parse_dates=['Datum'], date_parser=dateparser.parse, index_col=False ,dtype=str, low_memory=False,sep=",")
    counter +=1
    df.to_csv("CSVs/Transactions_format/"+str(counter)+".csv", index=False)

在加载文件时添加“dayfirst=True”对我没有任何作用。

【问题讨论】:

  • 还将错误消息添加到您的问题中
  • 我没有收到错误消息,只是日期时间的格式不正确。

标签: python pandas datetime dateparser


【解决方案1】:

开箱即用,dateparser 假定 MDY 顺序;来自docs


基于 OOTB 语言的日期顺序首选项

>>> # parsing ambiguous date
>>> parse('02-03-2016')  # assumes english language, uses MDY date order
datetime.datetime(2016, 2, 3, 0, 0)
>>> parse('le 02-03-2016')  # detects french, uses DMY date order
datetime.datetime(2016, 3, 2, 0, 0)

如果您在第二步而不是在read_csv 期间解析日期,您可以向 dateparser 提供设置,例如:

import dateparser   
import pandas as pd

df = pd.DataFrame({'dates': (uk,fr,it,es,de,se,nl,pl)})

df['datesparsed'] = df['dates'].apply(dateparser.parse, settings={'DATE_ORDER': 'DMY'})

# df
#                     dates         datesparsed
# 0    31 Jul 2021 23:07:35 2021-07-31 23:07:35
# 1  31 juil. 2021 22:36:38 2021-07-31 22:36:38
# 2    31 lug 2021 22:14:56 2021-07-31 22:14:56
# 3   31 jul. 2021 22:08:08 2021-07-31 22:08:08
# 4     01.08.2021 22:15:54 2021-08-01 22:15:54
# 5    2 jan. 2022 07:12:44 2022-01-02 07:12:44
# 6   31 jul. 2021 22:04:02 2021-07-31 22:04:02
# 7     2 lis 2021 08:27:54 2021-11-02 08:27:54

( !) 但请注意,现在所有不明确的日期将被解释为 DMY。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多