转换为Pandas Datetime时出错只包括时间

时间:2017-07-24 02:52:52

标签: python pandas datetime

我在数据框中创建了一个新列,它是两个datetime64列之间的差异,精确到秒。其他两列已使用以下格式创建:

df = df.col1.values.astype('datetime64[s]')
df = df.col2.values.astype9('datetime64[s]')
df.col3 = df.col2 - df.col1

df.col3 值的格式为'%H:%M:%S',我不想要日期(只是时差)。我尝试过以下命令:

df.col3 = pd.to_datetime(df.col3, format='%H:%M:%S')

但是我收到以下错误:

  

ValueError:时间数据1154000000000L与格式不匹配'%H:%M:%S'   (匹配)

我想知道为什么会出现这个错误,以及我可以做些什么来将这个时差转换为最终可用于排序目的的格式。感谢。

编辑:有问题的数据帧具有以下格式:

             col1           col2                   col3       IDval
0    2015-01-10 19:31:59 2015-01-10 19:51:13      00:19:14   949560
1    2015-01-10 19:31:52 2015-01-10 19:51:13      00:19:21   949560
2    2015-01-10 19:31:59 2015-01-10 19:51:53      00:19:54   949560
3    2015-01-10 19:31:52 2015-01-10 19:51:53      00:20:01   949560
4    2015-01-10 19:31:59 2015-01-10 19:51:53      00:19:54   949560
5    2015-01-10 19:31:52 2015-01-10 19:51:53      00:20:01   949560

这只是我的数据框中几列的示例:每个 IDVAL 的多行,其中每行有不同的 col3 。最后,我想使用0:00 - 9:30命令提取between_time之间的所有行。感谢。

1 个答案:

答案 0 :(得分:1)

所以在你这样做之后:

提供

df['final'] = df.col3 - df.col2

00:19:14 1
00:19:21 2
00:19:54 3
00:20:01 4
00:19:54 5
00:20:01 6

df['final'] = pd.to_datetime(df['final'])

df['final'] 

1970-01-01 00:19:14 1
1970-01-01 00:19:21 2
1970-01-01 00:19:54 3
1970-01-01 00:20:01 4
1970-01-01 00:19:54 5
1970-01-01 00:20:01 6 名称:final,dtype:datetime64 [ns]

创建索引列

df.index = pd.to_datetime(df['final'])

然后再做

df['final'].between_time('00:19:14','00:19:54')

这给出了你想要的结果。您只需要从结果中删除“1970-01-01”。希望这能回答你的问题。