Pandas 格式化日期时间

当进行数据分析时,我们会遇到很多带有日期、时间格式的数据集,在处理这些数据集时,就需要对日期时间做统一的格式化处理。

比如“Wednesday, June 6, 2023”可以写成“6/6/23”,或“06-06-2023”。

Pandas 中,我们可以使用 pd.to_datetime() 函数将日期字符串或时间戳转换为 Pandas 的日期时间类型。这在上一篇详解Pandas中的时间序列中有过讲解。

转换后,我们就可以使用 strftime() 函数将日期时间格式化为自己想要的字符串形式。

strftime() 函数:将日期时间格式化为字符串

strftime() 函数是 Python 中 datetime 模块中的一个方法,用于将 datetime 对象格式化为字符串。它的用法如下:

datetime_object.strftime(format)

其中,datetime_object 表示一个 datetime 对象,format 是一个字符串,用来指定 datetime 对象转换后的格式。

format 字符串中可以包含以下格式化符号:

格式化符号 含义
%Y 四位数的年份
%y 两位数的年份
%m 两位数的月份(01~12)
%B 月份的全称(January~December)
%b 月份的缩写名称(Jan~Dec)
%d 两位数的日期(01~31)
%H 24 小时制的小时数(00~23)
%I 12 小时制的小时数(01~12)
%p AM 或 PM
%M 两位数的分钟数(00~59)
%S 两位数的秒数(00~59)
%f 微秒(0~999999)
%j 一年中的第几天(001~366)
%U 一年中的第几周(00~53),以周日为一周的开始
%W 一年中的第几周(00~53),以周一为一周的开始
%w 一周中的第几天(0~6),以周日为 0,周六为 6
%c 本地日期时间
%x 本地日期
%X 本地时间
%% 百分号

例如,将当前时间转换为字符串,格式为 "2023-03-05 12:34:56",可以使用如下代码:

from datetime import datetime

now = datetime.now()
date_string = now.strftime('%Y-%m-%d %H:%M:%S')
print(date_string)

输出结果:
2023-03-05 12:34:56

Pandas 日期时间格式化

在 Pandas 中,也使用 strftime() 方法将日期时间格式化为字符串。

strftime() 方法同样也是 datetime 模块中的方法,可以用它来格式化时间戳。不同于 datetime 中直接传入时间戳,Pandas 的 Series 和 DataFrame 中存储的是 pandas.Timestamp 对象,因此需要将它们转换成 datetime 对象后再进行格式化。

例如,将一个 Pandas Series 中的日期时间格式化为字符串,格式为 "YYYY-MM-DD",可以使用如下代码:

import pandas as pd

# 创建一个包含日期时间的 Pandas Series
dates = pd.Series(['2022-01-01', '2022-01-02', '2022-01-03'])

# 将日期时间转换为 Pandas Timestamp 对象
dates = pd.to_datetime(dates)

# 将 Pandas Timestamp 对象转换为 datetime 对象
dates = dates.dt.to_pydatetime()

# 将 datetime 对象格式化为字符串
date_strings = [date.strftime('%Y-%m-%d') for date in dates]

print(date_strings)

输出结果:

['2022-01-01', '2022-01-02', '2022-01-03']

在上面的代码中,首先使用 pd.to_datetime() 方法将字符串格式的日期时间转换为 Pandas Timestamp 对象,然后使用 dt.to_pydatetime() 方法将 Pandas Timestamp 对象转换为 datetime 对象。最后使用 strftime() 方法将 datetime 对象格式化为字符串。

本文链接:https://my.lmcjl.com/post/20057.html

展开阅读全文

4 评论

留下您的评论.