You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python:基于DataFrame现有时间戳列添加EST datetime列

解决Pandas中毫秒级UTC时间戳转EST时间列的矢量化方法

问题背景

有如下CSV格式数据(其中t列为毫秒级UTC Unix时间戳):

v,vw,o,c,h,l,t,n
18043.0,374.411,374.69,374.99,374.99,373.8,1656662400000,157
12003.0,375.6296,375.15,375.84,375.9,374.95,1656663300000,98
18426.0,376.0636,375.98,376.02,376.29,375.63,1656664200000,88
4700.0,376.0772,375.88,376.11,376.34,375.85,1656665100000,43
27969.0,376.5703,376.11,376.56,376.92,375.82,1656666000000,135
17922.0,376.7123,376.69,376.48,376.89,376.46,1656666900000,95
11805.0,376.5813,376.6,376.38,376.71,376.38,1656667800000,74
19888.0,376.9877,376.28,377.11,377.2,376.28,1656668700000,100
7853.0,376.7016,377.25,376.66,377.25,376.48,1656669600000,67
36560.0,377.3454,376.69,377.05,377.8,376.69,1656670500000,175
10862.0,376.354,376.74,376.06,376.74,376.06,1656671400000,92
14740.0,375.8719,376.09,375.74,376.09,375.71,1656672300000,126
78885.0,375.9584,375.88,375.901,376.14,375.71,1656673200000,628
43363.0,376.0552,375.8,376.31,376.4,375.68,1656674100000,277
...

需要在DataFrame中新增一列EST格式的时间戳,且不想通过逐行处理实现,尝试过程中遇到错误:

TypeError: cannot convert the series to <class 'int'>

矢量化实现方法

完全可以用Pandas的矢量化操作实现,无需逐行遍历,这也是Pandas的最优实践。核心思路是利用pd.to_datetime直接处理整个t列,再转换时区到EST(美国东部标准时间对应时区标识符为'America/New_York',自动处理夏令时)。

具体代码步骤

  1. 读取CSV数据到DataFrame:
import pandas as pd

df = pd.read_csv('your_data.csv')
  1. 将毫秒级UTC时间戳转换为带时区的datetime对象:
# 指定unit='ms'表示毫秒级时间戳,utc=True标记为UTC时区
df['utc_time'] = pd.to_datetime(df['t'], unit='ms', utc=True)
  1. 转换为EST时间,按需生成datetime对象或字符串格式:
# 转换时区到美国东部时间
df['est_time'] = df['utc_time'].dt.tz_convert('America/New_York')

# 若需要转为指定格式的字符串(如'YYYY-MM-DD HH:MM:SS'),使用strftime:
df['est_time_str'] = df['est_time'].dt.strftime('%Y-%m-%d %H:%M:%S')

错误原因说明

你遇到的TypeError通常是因为尝试用仅支持单个数值的函数(如datetime.fromtimestamp)处理整个Series,这类函数不支持批量操作。而pd.to_datetime是Pandas专为矢量化处理设计的方法,可直接处理整列数据。

内容的提问来源于stack exchange,提问作者Jack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 05:53:22