时间的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']
对象格式。
答案 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