做astype('datetime64 [ns]')时发生错误

时间:2020-05-18 15:59:24

标签: python pandas datetime timedelta

主题有两行。第一列是时间。

11:46:36 ......
12:0:4.......

我想做的是

Subject['Time'] = Subject['Time'].astype('datetime64[ns]')
Subject['Time']=Subject['Time'].dt.time

第一行效果很好,它给了我

2020-05-18 11:46:36

但是当我想对第二行执行此操作时,会出现以下错误:

OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 1-01-01 12:00:04

我知道熊猫代表纳秒级的时间戳,因此可以使用64位整数表示时间跨度,该整数限制为大约584年。

当我做Subject['Time'].dtype时,它只会给我dtype('O')

2 个答案:

答案 0 :(得分:1)

datetime对于不具有“日期”部分的数据不是适当的数据类型。您可能想改用timedelta

pd.to_timedelta(Subject["Time"])
#0   11:46:36
#1   12:00:04
#Name: Time, dtype: timedelta64[ns]

答案 1 :(得分:1)

您可以结合使用日期和时间增量来添加自定义日期,例如

import pandas as pd

df = pd.DataFrame({'Time': ['11:46:36', '12:0:4']})

# to datetime object; add a custom date, e.g. 2020-05-18:
df['Time'] = pd.to_datetime('2020-05-18') + pd.to_timedelta(df['Time'])
# df['Time']
# 0   2020-05-18 11:46:36
# 1   2020-05-18 12:00:04
# Name: Time, dtype: datetime64[ns]