【问题标题】:Convert multiple date formats to datetime in pandas在熊猫中将多种日期格式转换为日期时间
【发布时间】:2021-09-22 02:47:15
【问题描述】:

我有一排混乱的数据,其中日期格式不同,我希望它们与 pandas 中的日期时间一致

df:
          Date
0    1/05/2015
1  15 Jul 2009
2     1-Feb-15
3   12/08/2019

当我运行这部分时:

df['date'] = pd.to_datetime(df['date'], format='%d %b %Y', errors='coerce')

我明白了

        Date
0        NaT
1 2009-07-15
2        NaT
3        NaT

如何在 pandas 中将其全部转换为日期时间?

【问题讨论】:

    标签: python pandas datetime datetime-format


    【解决方案1】:

    pd.to_datetime 能够在同一列中处理多种日期格式。指定format 会妨碍其动态确定格式的能力,因此如果有多种类型,请不要指定format

    import pandas as pd
    
    df = pd.DataFrame({
        'Date': ['1/05/2015', '15 Jul 2009', '1-Feb-15', '12/08/2019']
    })
    
    df['Date'] = pd.to_datetime(df['Date'], errors='coerce')
    print(df)
    
            Date
    0 2015-01-05
    1 2009-07-15
    2 2015-02-01
    3 2019-12-08
    

    *处理多个日期时间的能力存在限制。混合时区感知和时区不感知日期时间将无法正确处理。同样,混合的 dayfirst 和 monthfirst 符号也不会总是正确解析。

    【讨论】:

    • 成功了!谢谢。您能帮我理解“dayfirst 和 monthfirst 符号”是什么意思吗?
    • dayfirst 表示法中的字符串“01/03/2020”将是“2020 年 3 月 1 日”,而 monthfirst 表示法将使该日期成为“2020 年 1 月 3 日”。如果你有这样的混合符号,它就不能总是正确地确定差异/正确的日期。
    • 这很有趣,因为通常传入的数据非常混乱,但是当日期大于 12 时,它必须是日期等。我如何适应这种逻辑?我知道我的要求有点高,但是我可以将这部分编码得更有弹性吗?
    • 它肯定会毫无问题地处理像 '31/12/2015' 这样的事情(因为这 必须 是 dayfirst 表示法)。这不是模棱两可的。但不可能区分诸如“01/03/2020”之类的内容。
    • 啊!这让我的生活更加艰难,哈哈。但是,它不在这个问题的范围内。当我遇到这个问题时,我会问另一个。非常感谢!
    猜你喜欢
    • 2021-10-21
    • 2018-11-17
    • 1970-01-01
    • 2014-02-23
    • 2023-03-07
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多