Python列表推导式转换Numpy数组时间戳为datetime的语法错误修复
错误原因
- 列表推导式结构错位:标准列表推导式结构为
[输出值表达式 for 迭代变量 in 可迭代对象 <if 可选筛选条件>],你的代码把时间转换的输出表达式错误放到了if筛选条件的位置,两种逻辑混写直接触发语法错误。 - 筛选条件逻辑错误:原代码
if ts > 0是对整个numpy数组做判断,而非判断单个迭代的时间戳x,就算语法修正后也无法实现按单个值过滤的需求。
修正后的代码
from datetime import datetime import numpy as np ts = np.array([1628997394, 1628997444, 1628997602, 1629006977, 1629007021]) # 若出现"year is out of range"报错,说明时间戳单位为毫秒,先执行下行注释的代码转换单位 # ts /= 1000 dates = [datetime.utcfromtimestamp(x).strftime('%Y-%m-%d %H:%M:%S') for x in ts if x > 0] print(dates)
输出结果
['2021-08-15 03:16:34', '2021-08-15 03:17:24', '2021-08-15 03:20:02', '2021-08-15 05:56:17', '2021-08-15 05:57:01']
注:输出结果的元素为字符串类型,默认带引号,若仅需要纯文本展示可单独遍历列表打印元素。
内容的提问来源于stack exchange,提问作者georgehere
相关产品推荐
相关产品推荐

