我有一个数据帧,其中一个列在纪元时间内:
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'>
我在这里做错了什么?
答案 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)))
这会将函数应用于系列中的每个值。