[英]convert epoch to datetime format python - typeerror
我有一个包含2列的数据框 - 一些值和时间。 时间戳是以纪元时间格式,我试图使用python中的时间库中的strftime函数进行转换。
这是一些示例数据
df = [{'A': 762, 'Time': 1512255906},
{'A': 810, 'Time': 1480719906}]
注意:时间采用纪元格式。 我正在执行一些转换,以确保它在通过strftime函数进行日期转换之前是数字(float)类型。
这是代码:
df['Time'] = pd.to_numeric(df['Time'], errors='coerce').fillna(0)
df['Time'].dtype
我在这一行上收到错误
df['Time'] = time.strftime("%d-%m", time.localtime(df['Time']))
追溯:
TypeError Traceback (most recent call last)
<ipython-input-53-86f4db0b80e4> in <module>()
----> 1 df['Time'] = time.strftime("%d-%m", time.localtime(df['Time']))
TypeError: cannot convert the series to <class 'int'>
您可以传递pd.to_datetime
的unit
参数,以了解该数字应表示的时间单位。 在这种情况下,你开始Time
是纪元的秒。 所以我们把's'
作为unit
。
df.assign(Time=pd.to_datetime(df.Time, unit='s').dt.strftime('%d-%m'))
# For in place, use:
# df.Time = pd.to_datetime(df.Time, unit='s').dt.strftime('%d-%m')
A Time
0 762 02-12
1 810 02-12
你可以使用pandas.DataFrame.apply
:
>>> import pandas as pd
>>> import time
>>> df = pd.DataFrame([{'A': 762, 'Time': 1512255906},
{'A': 810, 'Time': 1480719906}])
>>> df['Time'] = pd.to_numeric(df['Time'], errors='coerce').fillna(0)
>>> df['Time'] = df['Time'].apply(lambda t: time.strftime("%d-%m", time.localtime(t)))
>>> df
A Time
0 762 03-12
1 810 03-12
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.