【问题标题】:Formatting date from a dataframe of strings从字符串数据框中格式化日期
【发布时间】:2020-08-12 15:25:45
【问题描述】:

我的数据如下所示:

0 2/18/2020
1 9/30/2019

每一行都是一个字符串

我希望它保持其类型(字符串,而不是日期时间)但看起来像这样:

0 2020-02-18
1 2019-09-30

如何为数据框中的所有行实现这种格式?

谢谢!

【问题讨论】:

    标签: string pandas dataframe date format


    【解决方案1】:

    使用split 分隔MMDDYYYY,然后根据需要更改列表的顺序。确保单个数字的月份和日期收到前导零,最后joining 使用- 而不是/ 将列表重新组合成一个字符串:

    df = pd.DataFrame({'col': ['2/18/2020', '9/30/2019']})
    
    df['col'] = (df.col
                 .apply(lambda x: x.split('/')[2:] + x.split('/')[:2])
                 .apply(
                     lambda x:
                     x[0:1]
                     + (x[1:2] if len(x[1]) > 1 else ['0'+x[1]])
                     + (x[2:3] if len(x[2]) > 1 else ['0'+x[2]])
                 )
                 .apply(lambda x: '-'.join(x)))
    

    df
        col
    0   2020-02-18
    1   2019-09-30
    

    【讨论】:

    • 嘿@Dharman 感谢您的意见!我做了一些更新! :)
    • 感谢这对您有帮助!
    • @orie 随时!如果它帮助您解决问题,请随时接受答案。
    【解决方案2】:

    你可以使用:

    import pandas as pd
    df = pd.DataFrame({'date': ['2/18/2020', '9/30/2019']})
    df['date'] = pd.to_datetime(df['date']).dt.strftime('%Y-%m-%d')
    print(df)
    

    结果:

             date
    0  2020-02-18
    1  2019-09-30
    

    【讨论】:

    • 这非常有效。但是我要问你,为什么你使用了 datetime 命令,但它返回的是字符串而不是 datetime 对象?
    • 我想要它们作为字符串,只是想知道函数是如何工作的,呵呵
    猜你喜欢
    • 2011-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多