如何将CSV中UTC日期时间转换为本地时间绘制温度时序图
实现方法
核心是先将分离的UTC日期、时间字段合并为带时区标记的标准时间类型,再转换为太平洋时区(pandas会自动适配夏令时规则,无需手动计算时差),之后基于转换后的本地时间绘图即可,不需要额外复杂配置。
操作步骤
- 合并日期和时间列,解析为UTC时间:读取CSV后不要直接用单独的
Time列做X轴,这种写法本身存在跨天数据错位的隐患。把Date和Time两列内容拼接后,用pd.to_datetime解析为时间格式,传入utc=True参数明确标记该时间为UTC时区,避免后续时区转换出错。 - 转换为太平洋本地时间:对解析好的UTC时间列调用
dt.tz_convert('America/Los_Angeles'),直接得到太平洋时区时间,pandas会自动根据日期判断使用太平洋夏令时(PDT,UTC-7)还是太平洋标准时间(PST,UTC-8),不需要手动调整时差。 - 绘图:用转换完成的本地时间列作为X轴传入绘图方法,matplotlib会自动按本地时间格式渲染X轴刻度。
完整修改后代码
import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv('LFEM_data-.csv', skiprows=1) # 拼接日期、时间列,解析为UTC时区时间 df['utc_datetime'] = pd.to_datetime(df['Date'] + ' ' + df['Time'], utc=True) # 转换为太平洋时区(自动适配夏令时) df['local_datetime'] = df['utc_datetime'].dt.tz_convert('America/Los_Angeles') df.plot(x='local_datetime', y=['Temperature']) plt.xlabel('太平洋本地时间') plt.show()
小提示:如果CSV中存在格式异常的日期/时间值,可以在
pd.to_datetime中加入errors='coerce'参数,自动将无法解析的异常值转为空值,避免程序报错。
内容的提问来源于stack exchange,提问作者Richard Fuhr
相关产品推荐
相关产品推荐

