我在数据框中创建了一个新列,它是两个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
之间的所有行。感谢。
答案 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”。希望这能回答你的问题。