将纪元转换为日期时间格式 python - 类型错误
convert epoch to datetime format python - typeerror
我有一个包含 2 列的数据框 - 一些值和时间。时间戳采用纪元时间格式,我正在尝试使用 python 中时间库中的 strftime 函数进行转换。
这是一些样本数据
df = [{'A': 762, 'Time': 1512255906},
{'A': 810, 'Time': 1480719906}]
注意:时间为纪元格式。我正在执行一些转换以确保它是 numeric(float) 类型,然后再通过 strftime 函数进行日期转换。
代码如下:
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'>
您可以使用 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
您可以为 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
我有一个包含 2 列的数据框 - 一些值和时间。时间戳采用纪元时间格式,我正在尝试使用 python 中时间库中的 strftime 函数进行转换。
这是一些样本数据
df = [{'A': 762, 'Time': 1512255906},
{'A': 810, 'Time': 1480719906}]
注意:时间为纪元格式。我正在执行一些转换以确保它是 numeric(float) 类型,然后再通过 strftime 函数进行日期转换。
代码如下:
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'>
您可以使用 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
您可以为 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