Python Pandas合并日期时间列并转换为UTC时区求助
正确的解决方案步骤
1. 合并date和time为datetime列(指定格式更可靠)
Pandas的pd.to_datetime可以直接处理拼接后的时间字符串,而且通过format参数明确指定原始时间格式,能避免自动推断时出现错误。你的date是MM/DD/YYYY格式,time是H:M格式,所以格式字符串用%m/%d/%Y %H:%M:
df['datetime'] = pd.to_datetime(df['date'] + ' ' + df['time'], format='%m/%d/%Y %H:%M')
2. 转换为UTC时区
这里关键是要明确原始数据的时区(比如你的数据是北京时间、纽约时间还是本身就是UTC时间?):
- 如果原始时间是某个本地时区(比如北京时间):先给
datetime列添加上原始时区,再转换为UTC# 本地化原始时区(示例为北京时间,根据你的实际数据调整时区标识) df['datetime'] = df['datetime'].dt.tz_localize('Asia/Shanghai') # 转换为UTC时区 df['datetime'] = df['datetime'].dt.tz_convert('UTC') - 如果原始数据本身就是UTC时间:直接给
datetime列添加UTC时区标识即可df['datetime'] = df['datetime'].dt.tz_localize('UTC')
3. 删除原date和time列
用drop方法移除不需要的列:
df.drop(columns=['date', 'time'], inplace=True)
完整代码示例
import pandas as pd # 模拟你的数据 data = { 'date': ['1/15/2018', '1/15/2018', '1/15/2018'], 'Seq': [1, 2, 3], 'time': ['0:00', '0:01', '0:02'] } df = pd.DataFrame(data) # 合并时间列 df['datetime'] = pd.to_datetime(df['date'] + ' ' + df['time'], format='%m/%d/%Y %H:%M') # 转换为UTC(这里假设原始时区是北京时间,按需调整) df['datetime'] = df['datetime'].dt.tz_localize('Asia/Shanghai').dt.tz_convert('UTC') # 删除原列 df.drop(columns=['date', 'time'], inplace=True) print(df)
运行后你会得到带UTC时区的datetime列,格式是可读的YYYY-MM-DD HH:MM:SS+00:00,而不是时间戳。
内容的提问来源于stack exchange,提问作者Shankar Guru
相关产品推荐
相关产品推荐

