如何用Pandas将带时区的Timestamp转换为本地时间格式?
转换带时区的Timestamp为UTC时间格式
1. 用 Pandas 处理整列数据
如果你的数据存在 Pandas DataFrame 的 timestamp 列中(数据类型是带时区的 datetime64[ns]),可以通过两步完成转换:
# 第一步:把带时区的时间转成UTC时区 df['timestamp_utc'] = df['timestamp'].dt.tz_convert('UTC') # 第二步:移除时区信息,得到目标格式 df['timestamp_utc'] = df['timestamp_utc'].dt.tz_localize(None)
也可以合并成一行简化操作:
df['timestamp_utc'] = df['timestamp'].dt.tz_convert('UTC').dt.tz_localize(None)
处理后 timestamp_utc 列的结果就是 2023-02-04 05:08:42 这种无时区的Timestamp格式。
2. 用 Python 原生 datetime 处理单个时间值
如果是单个带时区的 datetime 对象,这么处理:
from datetime import datetime # 示例带时区的时间对象 ts = datetime.fromisoformat('2023-02-04 08:08:42+03:00') # 转成UTC时区 ts_utc = ts.astimezone(datetime.timezone.utc) # 移除时区信息 ts_utc_naive = ts_utc.replace(tzinfo=None) # 输出成字符串格式的话用strftime print(ts_utc_naive.strftime('%Y-%m-%d %H:%M:%S')) # 输出结果:2023-02-04 05:08:42
核心逻辑说明
tz_convert('UTC')或astimezone(datetime.timezone.utc):负责把带时区的时间转换为UTC时间,会自动计算偏移量(比如+03:00的时间减去3小时)。tz_localize(None)或replace(tzinfo=None):移除时间对象的时区标记,最终得到符合需求的无时区时间格式。
内容的提问来源于stack exchange,提问作者nirkov
相关产品推荐
相关产品推荐

