当进行数据分析时,我们会遇到很多带有日期、时间格式的数据集,在处理这些数据集时,就需要对日期时间做统一的格式化处理。
比如“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 对象格式化为字符串。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pandas 格式化日期时间 - Python技术站