在Python中将纪元转换为可读数据时间

时间:2018-08-17 18:52:53

标签: python pandas

我有一个数据帧,其中一个列在纪元时间内:

df1['timestamp'] 

是这样的:

1533009600000
1533013200000  
1533016800000 



timestamp    object

我需要转换为人类可读的时间戳。我尝试过:

import time
df1['timestamp']=time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(df1['timestamp']))

我收到此错误:

TypeError: cannot convert the series to <type 'float'>

我在这里做错了什么?

2 个答案:

答案 0 :(得分:4)

您可以根据时间单位进行转换。假设为ms,则该数字对于s太大

df['timestamp'] = pd.to_datetime(df['timestamp'], unit = 'ms')


    timestamp
0   2018-07-31 04:00:00
1   2018-07-31 05:00:00
2   2018-07-31 06:00:00

答案 1 :(得分:0)

您的错误是您试图将一系列df1['timestamp']传递给函数time.localtime。将您的行更改为此:

df1['timestamp'] = df1['timestamp'].apply(lambda timestamp: time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(timestamp)))

这会将函数应用于系列中的每个值。