看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
(编码题)日志表里的时间字符串想直接变成北京时区的 datetime 时间类型。
源数据如下:
import pandas as pd
df = pd.DataFrame({'log_time':['2023-06-10 12:30:00',
'2023-06-10 13:45:00']})
print(df)
print()
print(df.dtypes)
输出:
log_time
0 2023-06-10 12:30:00
1 2023-06-10 13:45:00
log_time object
dtype: object
要求:
astype()
将 log_time
列转换为 带时区 的 datetime64,时区为北京时间。代码如下:
import pandas as pd
df = pd.DataFrame({'log_time':['2023-06-10 12:30:00',
'2023-06-10 13:45:00']})
# 直接在 astype 中写带时区的类型字符串
df.log_time = df.log_time.astype('datetime64[ns, Asia/Shanghai]')
# 方法 二,转时间类型再指定时区
df.log_time = (
df.log_time.astype('datetime64[ns]')
.dt.tz_localize('Asia/Shanghai')
)
print(df)
print()
print(df.dtypes)
输出:
log_time
0 2023-06-10 12:30:00+08:00
1 2023-06-10 13:45:00+08:00
log_time datetime64[ns, Asia/Shanghai]
dtype: object
astype()
接受完整的 NumPy datetime64 类型别名,直接写成 'datetime64[ns, Asia/Shanghai]'
即可在一步内完成解析字符串并附加 UTC 时区,无需后续 .dt.tz_localize
。
(完)
更新时间:2025-09-14 10:45:39 标签:pandas python 时间 时区