在熊猫数据框中将纪元列值转换为时间

Posted

技术标签:

【中文标题】在熊猫数据框中将纪元列值转换为时间【英文标题】:converting epoch column values to time in pandas dataframe 【发布时间】:2020-12-19 17:23:00 【问题描述】:

我在数据框中有一列纪元值,并试图将它们转换为日期时间。我尝试了一些解决方案,但似乎无法让它们为我工作。

请参见下面的示例。 time.ctime() 为我提供每个值的正确日期和时间。当我尝试将其应用于列时,我无法将系列转换为 。确保类型 int 没有任何区别。

df = pd.DataFrame(data= 'epoch':[1599783600, 1600016400])

import time
time.ctime(1599783600)
Out: 'Thu Sep 10 20:20:00 2020'
 
time.ctime(1600016400)
Out: 'Sun Sep 13 13:00:00 2020'

df['time3'] = time.ctime(df['epoch'])

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

df['epoch'] = df['epoch'].astype(int)
df.dtypes
Out:
  epoch    int64
  dtype: object

我还尝试了以下似乎可行的方法,但日期时间不正确(日期是 NFL 比赛的开始时间)。

df['time'] = pd.to_datetime(df['epoch'], unit='s')

from datetime import datetime, timedelta
start = datetime(1970, 1, 1)

df['time2'] = df.epoch.apply(lambda x: start + timedelta(seconds=x))

df

Out: 
        epoch                time               time2
0  1599783600 2020-09-11 00:20:00 2020-09-11 00:20:00
1  1600016400 2020-09-13 17:00:00 2020-09-13 17:00:00

任何指导将不胜感激。

【问题讨论】:

【参考方案1】:

您需要考虑时区。看起来这些游戏是从 EST 开始的(你需要在某个地方找到它):

df['time'] = pd.to_datetime(
    df['epoch'], unit='s', utc=True
).dt.tz_convert(tz="US/Eastern")

【讨论】:

以上是关于在熊猫数据框中将纪元列值转换为时间的主要内容,如果未能解决你的问题,请参考以下文章

在python中将Dataframe列转换为时间格式

将纪元时间转换为熊猫数据框中的格式化日期字符串

我正在使用熊猫数据框,我需要在不使用循环的情况下将一整列纪元时间戳转换为人类时间

日期时间字符串到纪元:熊猫数据框

将纪元转换为时间戳时获取不正确的日期

将纪元时间转换为时间戳颤动