如何更改 Pandas 数据框中的日期格式? [复制]

Posted

技术标签:

【中文标题】如何更改 Pandas 数据框中的日期格式? [复制]【英文标题】:How to change date format in Pandas dataframe? [duplicate] 【发布时间】: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

【问题讨论】:

【参考方案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')

【讨论】:

以上是关于如何更改 Pandas 数据框中的日期格式? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Pandas 数据框中的字符串转换为“日期”数据类型?

如何使用熊猫更改数据框中的日期时间格式? [复制]

将 JSON 时间戳字符串转换为 pandas 数据框中的 python 日期

如何在 pandas 的数据框中选择多个日期列,然后将它们全部格式化? (Python)

如何在支持多种数据格式的 Pandas 中合并日期?

如何使用另一个日期时间索引获取具有日期时间索引的 Pandas 数据框中的行?