如何更改 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
模块中的strptime
和strftime
方法在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 日期