首页 > 解决方案 > 解析和 strptime 不会在熊猫中转换我的日期

问题描述

我试图让我的数据框中的日期成为标准timestamp的。

我有一个看起来像这样的数据框:

747        August 1,2019
587           12-06-2019
347           04-09-2019
709          July 9,2019
135            20/2/2019

解析器似乎什么都不做。

df['registration_date'] = df['registration_date'].astype(str)

for date in df['registration_date']:
    try:
        date = parse(date)
    except ValueError:
        pass

变体不起作用:

date = parse(date, fuzzy=True)
date = parse(date, fuzzy_with_tokens=True)
date = parse(date, fuzzy_with_tokens=False)

而且strptime也不起作用:

for date in df['registration_date']:
    try:                                                                                                        
        date = datetime.strptime(date, '%B %d,%Y')
    except ValueError:
        pass

我究竟做错了什么?

标签: pythonpandasdatetimeparsing

解决方案


运行df.registration_date = pd.to_datetime(df.registration_date)

幸运的是,pd.to_datetime它足够聪明,可以识别每种情况下的日期格式并正确转换(至少对于您的示例数据)。

类型注意事项:

如果您随后运行df.info(),您将看到此列的类型为datetime64[ns]。但是,如果您读取单个值,例如从第一行读取:df.loc[0, 'registration_date']您将获得 Timestamp('2019-08-01 00:00:00'),因此单个值只是Timestamp类型。


推荐阅读