微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python-在熊猫数据框中将不同的日期时间格式转换为MM / DD / YYYY格式

我在pandas.DataFrame中有一个以各种日期时间格式表示的日期列,并存储为列表对象,如下所示:

            date
1    [May 23rd, 2011]
2    [January 1st, 2010]
    ...
99   [Apr. 15, 2008]
100  [07-11-2013]
    ...
256  [9/01/1995]
257  [04/15/2000]
258  [11/22/68]
    ...
360  [12/1997]
361  [08/2002]
     ...
463  [2014]
464  [2016]

为了方便起见,我想将它们全部转换为MM / DD / YYYY格式.似乎无法使用regex replace()函数来执行此操作,因为无法对列表对象执行此操作.另外,对每个单元使用strptime()会很费时.

将它们全部转换为所需的MM / DD / YYYY格式的简单方法是什么?我发现很难对数据框内的列表对象执行此操作.

注意:对于格式为[YYYY]的单元格值(例如[2014]和[2016]),我将假定它们是该年的第一天(即1968年1月1日),并且对于诸如[08]的单元格值/ 2002](或[8/2002]),则假定它们是当年某月的第一天(即2002年8月1日).

解决方法:

给定您的样本数据,并添加一个NaT,这可以起作用:

码:

df.date.apply(lambda x: pd.to_datetime(x).strftime('%m/%d/%Y')[0])

测试代码

import pandas as pd

df = pd.DataFrame([
    [['']],
    [['May 23rd, 2011']],
    [['January 1st, 2010']],
    [['Apr. 15, 2008']],
    [['07-11-2013']],
    [['9/01/1995']],
    [['04/15/2000']],
    [['11/22/68']],
    [['12/1997']],
    [['08/2002']],
    [['2014']],
    [['2016']],
], columns=['date'])

df['clean_date'] = df.date.apply(
    lambda x: pd.to_datetime(x).strftime('%m/%d/%Y')[0])

print(df)

结果:

                   date  clean_date
0                    []         NaT
1      [May 23rd, 2011]  05/23/2011
2   [January 1st, 2010]  01/01/2010
3       [Apr. 15, 2008]  04/15/2008
4          [07-11-2013]  07/11/2013
5           [9/01/1995]  09/01/1995
6          [04/15/2000]  04/15/2000
7            [11/22/68]  11/22/1968
8             [12/1997]  12/01/1997
9             [08/2002]  08/01/2002
10               [2014]  01/01/2014
11               [2016]  01/01/2016

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐