将纪元列值转换为 pandas 数据帧中的时间
converting epoch column values to time in pandas dataframe
我在数据框中有一列纪元值,并试图将它们转换为日期时间。我已经尝试了一些解决方案,但似乎无法让它们为我工作。
参见下面的示例。 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
如有任何指导,我们将不胜感激。
您需要考虑时区。看起来这些游戏开始于美国东部标准时间(您需要在某处找到它):
df['time'] = pd.to_datetime(
df['epoch'], unit='s', utc=True
).dt.tz_convert(tz="US/Eastern")
我在数据框中有一列纪元值,并试图将它们转换为日期时间。我已经尝试了一些解决方案,但似乎无法让它们为我工作。
参见下面的示例。 time.ctime() 为我提供了每个值的正确日期和时间。当我尝试将它应用于列时,我无法将系列转换为
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
如有任何指导,我们将不胜感激。
您需要考虑时区。看起来这些游戏开始于美国东部标准时间(您需要在某处找到它):
df['time'] = pd.to_datetime(
df['epoch'], unit='s', utc=True
).dt.tz_convert(tz="US/Eastern")