Pandas如何将微秒级Unix时间戳转换为datetime并设置为索引
微秒级Unix时间戳转Pandas datetime解决方案
报错原因
你传入的1632527998056329为16位微秒粒度Unix时间戳,而你代码中指定的unit='ms'仅适配13位毫秒级时间戳,用毫秒单位解析微秒级数值会得到远超出Pandas datetime支持范围(上限为2262年)的结果,因此触发越界报错。
正确转换代码
直接将unit参数改为微秒对应的取值us即可:
import pandas as pd # 转换微秒时间戳列为datetime格式 data['local_timestamp'] = pd.to_datetime(data['local_timestamp'], unit='us') # 将转换后的时间列设置为索引 data.set_index('local_timestamp', inplace=True)
测试你的示例时间戳,执行pd.to_datetime(1632527998056329, unit='us')会返回正确结果Timestamp('2021-09-24 23:59:58.056329'),无报错。
可选兼容方案
如果你的数据中存在混合粒度的时间戳,也可以先将数值统一转换为秒级再解析,精度不会丢失:
data['local_timestamp'] = pd.to_datetime(data['local_timestamp'] / 1000000, unit='s')
常见Unix时间戳粒度对应unit参数对照表
- 10位秒级时间戳:
unit='s' - 13位毫秒级时间戳:
unit='ms' - 16位微秒级时间戳:
unit='us' - 19位纳秒级时间戳:
unit='ns'
内容的提问来源于stack exchange,提问作者user1234440
相关产品推荐
相关产品推荐

