首页 > 解决方案 > 混合日期格式更新

问题描述

将数据框中的所有日期更改为标准日期时间

这个链接有帮助,但并没有完全让我明白,或者更有可能我没有飞跃到那里。目前,混合日期“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 使用许多不同的日期类型格式化日期时间

标签: pythonpandasdatetime

解决方案


如果您的格式列表仅包括“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

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


推荐阅读