【问题标题】:datetime.fromtimestamp TypeErrordatetime.fromtimestamp 类型错误
【发布时间】:2020-08-07 05:34:24
【问题描述】:

我正在尝试将纪元 (unixtime) 转换为日期时间格式 (UTC) 并有代码这样做;

from datetime import datetime, timezone
vmmR817['datetime_new_utc']=datetime.fromtimestamp(vmmR817['epoch'],timezone.utc).strftime('%Y-%m-%d %H:%M:%S')
datetime.fromtimestamp(1563915600,timezone.utc).strftime('%Y-%m-%d %H:%M:%S')

该代码适用于单个时代 (1563915600),但不适用于数据帧的完整系列 (vmmR817['epoch'])。它返回以下错误

TypeError:无法将系列转换为

Df 看起来像:

时间序列从:

datetime.fromtimestamp(1525039200,timezone.utc).strftime('%Y-%m-%d %H:%M:%S')
Out[93]: '2018-04-29 22:00:00'

datetime.fromtimestamp(1563915600,timezone.utc).strftime('%Y-%m-%d %H:%M:%S')
Out[92]: '2019-07-23 21:00:00'

有什么建议吗?

提前致谢!

【问题讨论】:

  • 顺便说一句,有一个datetime.utcfromtimestamp - 不需要将UTC设置为时区。

标签: python pandas datetime utc epoch


【解决方案1】:

datetime.fromtimestamp 需要一个标量输入;但是您正在传递一个熊猫系列(数据框中的一列)。那是行不通的。只需使用pd.to_datetime 转换整列:

import pandas as pd
# example df:
df = pd.DataFrame({'epoch': [1563915600]})
# convert the epoch column:
df['epoch'] = pd.to_datetime(df['epoch'], unit='s')
# 0   2019-07-23 21:00:00
# Name: t, dtype: datetime64[ns]

【讨论】:

  • 工作得很好,谢谢!此外,我使用df['datetime_utc'] = pd.to_datetime(df['epoch'], unit='s', utc=True) 让它知道时区
  • @JelleH:好的,只要确保你的时间戳首先参考 UTC ;-)
猜你喜欢
  • 2017-07-13
  • 1970-01-01
  • 2023-03-13
  • 2012-08-16
  • 1970-01-01
  • 2016-07-02
  • 2020-11-25
  • 2014-03-26
  • 2021-05-12
相关资源
最近更新 更多