如何将DataFrame中指定格式的'time'列转换为目标时间戳格式?
解决DataFrame时间列格式转换问题
要将格式为DD/MM/YYYY HH:MM的字符串列转换为YYYY-MM-DD HH:MM:SS+01:00格式的带时区时间戳,可以通过以下步骤实现:
步骤1:解析原始时间字符串
使用pd.to_datetime()指定输入格式,将字符串列转换为pandas的datetime对象,避免自动推断出错:import pandas as pd # 示例DataFrame df = pd.DataFrame({'time': ['01/05/2024 14:30', '15/12/2023 09:15']}) # 解析原始时间列 df['time'] = pd.to_datetime(df['time'], format='%d/%m/%Y %H:%M')步骤2:添加UTC+1时区信息
给解析后的naive datetime对象添加+01:00时区偏移,这里可以用Etc/GMT-1直接对应UTC+1时区:df['time'] = df['time'].dt.tz_localize('Etc/GMT-1')如果需要考虑夏令时,可以使用具体时区(如
Europe/Paris),但需确保安装了pytz或zoneinfo库。步骤3:格式化为目标字符串格式
两种方式实现目标格式:- 动态适配时区偏移并调整格式:
# 利用%z获取时区偏移,将+0100转换为+01:00 df['time'] = df['time'].dt.strftime('%Y-%m-%d %H:%M:%S%z').str.replace(r'(\+01)00', r'\1:00')- 直接拼接固定时区后缀(适合不需要动态时区的场景):
df['time'] = df['time'].dt.strftime('%Y-%m-%d %H:%M:%S') + '+01:00'
最终处理后的DataFrame输出示例:
time 0 2024-05-01 14:30:00+01:00 1 2023-12-15 09:15:00+01:00
内容的提问来源于stack exchange,提问作者Lkmuraz
相关产品推荐
相关产品推荐

