【问题标题】:Mixed Date Formats Update混合日期格式更新
【发布时间】:2021-07-10 15:06:45
【问题描述】:

changing all dates to standard date time in dataframe

此链接有帮助,但并没有完全让我明白,或者更有可能我没有飞跃到那里。 目前,混合日期“2021-04-15”、“04152021”、“04/15/2021”、“NaN/NULL”都存在于这些列中。

独立地,转换标准日期或整数没有问题。

FileDates = ['HIRE1','HIRE2','DATE3','DOB','DATE4','DATE5','DATE6','DATEn+x']
for c in FileDates:
    df[c]=pd.to_datetime(df[c],errors = 'ignore')

import datetime
datetime.datetime.strptime('01012020','%m%d%Y').strftime('%m/%d/%Y')
'01/01/2020'

问题 - 我应该如何或如何才能通过并重新格式化日期以在一两次通过时可读?我想我缺少一些基本的东西。

现在,更新所有“日期”,但如果我尝试更新整数日期,则会在意外格式 (m/d/y) 或 Null 格式上出错。

更新 - 谢谢,此外以下链接也很有帮助。 Pandas format datetime with many different date types

【问题讨论】:

  • 如果没有更多信息,就无法判断诸如“02032020”之类的内容是指 2020-03-02 还是 2020-02-03(iso 格式)。如果您无法控制输入,最好的办法是尝试解析它,直到不再出现异常
  • 您能否澄清一下,具体是什么问题?您说您转换标准日期或整数没有问题 - 那么有什么问题 给您带来问题?可以加个minimal reproducible example吗?

标签: python pandas datetime


【解决方案1】:

如果您的格式列表仅包括“2021-04-15”、“04152021”、“04/15/2021”和“NaN/NULL”,并且您想将其转换为 ISO 格式,您可以尝试以下操作:

def convert_datetime(input):
    """Try to parse a datetime as yyyy-mm-dd, dd/mm/yyyy and ddmmyyyy,
    and convert it to ISO format"""
    try:
        return datetime.strptime(input, "%Y-%m-%d").isoformat()
    except ValueError:
        pass

    try:
        return datetime.strptime(input, "%d/%m/%Y").isoformat()
    except ValueError:
        pass

    try:
        return datetime.strptime(input, "%d%m%Y").isoformat()
    except ValueError:
        pass

    # the input could not be parsed, return a default value
    return None

如果您可能的格式也包含其中一种格式,但是月份和日期颠倒了,您将遇到麻烦,并且您无法确定每次都能正确解析日期。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-22
    • 2017-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多