繁体   English   中英

将epoch转换为datetime格式python - typeerror

[英]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_datetimeunit参数,以了解该数字应表示的时间单位。 在这种情况下,你开始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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM