【问题标题】:Pandas read excel with mixed date formatsPandas 使用混合日期格式读取 excel
【发布时间】:2017-12-15 17:48:35
【问题描述】:

我正在尝试读取一列中包含日期值的 Excel。然而,它们有两种不同的格式:

03.07.2017
03.07.2017
30/06/2017
30/06/2017
30/06/2017
03.07.2017
03.07.2017

07 和 06 是月份。

我用以下方式导入 excel:

denik=pd.read_excel('obchodnidenik.xlsx',converters={'Vstup - datum':str})

但是日期的转换方式不同。

我得到两种日期/月份转换的日期格式:

'30/06/2017'
'2017-03-07 00:00:00'

将所有值转换为正确日期时间的最佳方法是什么?

【问题讨论】:

  • 阅读时不要解析日期,将字符串中的.替换为/,然后pd.to_datetime?
  • 但是解析是自动的 - 我什至尝试强制“str”格式,但它没有帮助。
  • 强制转换器类型确实有效,您是否在正确的列上使用正确的语法stackoverflow.com/a/41117204
  • U 使用语法:denik=pd.read_excel('obchodnidenik.xlsx',converters={'Vstup - datum':str}) 并且列'Vstup - datum'是正确的。
  • 你试过openpyxl吗?提供更灵活的编辑和导入...

标签: python excel pandas


【解决方案1】:

您可以在阅读excel后使用Series.replace,然后将其转换为正确的日期时间,并将dayfirst = True设置为正确的月份 示例:

n = ['03.07.2017','03.07.2017','30/06/2017','30/06/2017','30/06/2017','03.07.2017','03.07.2017']
df = pd.DataFrame(n)
df[0]=df[0].replace('[/\/.]','-',regex=True)
df[0] = pd.to_datetime(df[0],dayfirst=True)

输出:

0 2017-07-03 1 2017-07-03 2 2017-06-30 3 2017-06-30 4 2017-06-30 5 2017-07-03 6 2017-07-03

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-21
    • 1970-01-01
    • 2021-09-26
    • 2020-11-30
    • 2021-07-10
    相关资源
    最近更新 更多