如何解决TypeError:无法将系列转换为<type'float'=“”>

时间:2018-07-18 09:08:40

标签: python pandas epoch

时间的epoch值对特定的epoch值的转换如下:

linkage

但是当我将上述方法应用于数据集中的一列时间时,

new_dict = {x: v for x, v in mydict.items() if x in mykeys}

我遇到以下错误:

time.strftime("%H:%M:%S ", time.localtime(28000000000))  
Out[82]: '07:16:40 '     

我要去哪里错了?

time.strftime("%H:%M:%S ", time.localtime(df1['d'])) 是历时持续时间,其在列中的数据如下:

TypeError: cannot convert the series to type 'float'

我需要纪元时间而不是df1['d']对象格式。

2 个答案:

答案 0 :(得分:2)

我认为需要Series.apply和lambda函数:

df1 = pd.DataFrame({'d':[28000000000,28000000000]})

df1['times'] = df1['d'].apply(lambda x: time.strftime("%H:%M:%S", time.localtime(x)))

list comprehension

df1['times'] = [time.strftime("%H:%M:%S", time.localtime(x)) for x in df1['d']]

print (df1)
             d     times
0  28000000000  03:46:40
1  28000000000  03:46:40

答案 1 :(得分:1)

您可以使用map功能。

import pandas as pd
import time

df = pd.DataFrame([[28000000000, 2.5], [28100000000, 2.54]], columns=['d', 'e'])

df['time'] = df.d.map(lambda t: time.strftime("%H:%M:%S ", time.localtime(t)))
print(df)
#              d     e       time
# 0  28000000000  2.50  03:46:40 
# 1  28100000000  2.54  13:33:20