【问题标题】:How to change date format in Pandas dataframe? [duplicate]如何更改 Pandas 数据框中的日期格式? [复制]
【发布时间】:2021-04-09 17:56:57
【问题描述】:

我有使用 2 个参数的数据框:

data_frame = pd.DataFrame(columns=l_header, data=conv)

内容如下:

  column_1                    date
0      XYZ  04/11/2016 09:13:55 AM
1      QAZ  05/10/2019 11:31:05 PM
2      WSX  12/08/2019 08:00:00 AM

如何更改日期列格式(它是一个字符串):

%m/%d/%Y %I:%M:%S %p

到:

%Y-%m-%d %H:%M:%S

【问题讨论】:

    标签: python pandas date-formatting


    【解决方案1】:

    您可以使用内置datetime 模块中的strptimestrftime 方法在lambda 函数中使用,该函数将放入apply 方法的括号中:

    from datetime import datetime
    import pandas as pd
    
    df = {"column_1": ["XYZ", "QAZ", "WSX"],
          "date": ["04/11/2016 09:13:55 AM", "05/10/2019 11:31:05 PM", "12/08/2019 08:00:00 AM"]}
    
    df = pd.DataFrame(df)
    
    format1 ="%m/%d/%Y %I:%M:%S %p"
    format2 = "%Y-%m-%d %H:%M:%S"
    df["date"] = df["date"].apply(lambda x: datetime.strptime(x, format1).strftime(format2))
    print(df)
    

    输出:

      column_1                 date
    0      XYZ  2016-04-11 09:13:55
    1      QAZ  2019-05-10 23:31:05
    2      WSX  2019-12-08 08:00:00
    

    更新:

    正如@YevKad 在 cmets 中指出的那样,不需要导入datetime,因为pandas 带有自己的datetime 部分:

    import pandas as pd
    
    df = {"column_1": ["XYZ", "QAZ", "WSX"],
          "date": ["04/11/2016 09:13:55 AM", "05/10/2019 11:31:05 PM", "12/08/2019 08:00:00 AM"]}
    
    df = pd.DataFrame(df)
    
    format1 ="%m/%d/%Y %I:%M:%S %p"
    format2 = "%Y-%m-%d %H:%M:%S"
    
    df['date'] = pd.to_datetime(df['date'], format=format1).dt.strftime(format2)
    
    print(df)
    

    【讨论】:

    • 如果你想避免使用apply,你可以这样做:df['date']= pd.to_datetime(df['date'],format=format1).dt.strftime(format2)
    • @YevKad 酷!我可以将其包含在我的帖子中吗?
    • 当然,继续!
    【解决方案2】:

    我觉得这应该是最方便的方式了吧?

    >>> df
      column_1                    date
    0      XYZ  04/11/2016 09:13:55 AM
    1      QAZ  05/10/2019 11:31:05 PM
    2      WSX  12/08/2019 08:00:00 AM
    
    >>> df['date']=pd.to_datetime(df['date'], infer_datetime_format='%Y-%m-%d %H:%M:%S')
    
      column_1                date
    0      XYZ 2016-04-11 09:13:55
    1      QAZ 2019-05-10 23:31:05
    2      WSX 2019-12-08 08:00:00
    

    但最好在加载 .csv 文件期间执行此操作

    >>> data_frame = pd.DataFrame(columns=l_header, 
            parse_dates=['date'], 
            infer_datetime_format='%Y-%m-%d %H:%M:%S')
    

    【讨论】:

      猜你喜欢
      • 2017-06-28
      • 2019-01-20
      • 2016-02-19
      • 2018-05-13
      • 1970-01-01
      • 2021-01-11
      • 1970-01-01
      • 2015-07-25
      • 2021-04-14
      相关资源
      最近更新 更多