假设我有一个pandas数据帧,如下所示:
>>> df=pd.DataFrame({'dt':pd.to_datetime(['2018-12-10 16:35:34.246','2018-12-10 16:36:34.243','2018-12-10 16:38:34.216','2018-12-10 16:42:34.123']),'value':[1,2,3,4]})
>>> df
dt value
0 2018-12-10 16:35:34.246 1
1 2018-12-10 16:36:34.243 2
2 2018-12-10 16:38:34.216 3
3 2018-12-10 16:42:34.123 4
>>>
我想通过 'dt'
列对这个数据帧进行分组,但我想以一种它认为小于一秒不同的值相同的方式对它进行分组,在对这些数据进行分组后我想总结一下 'value'
列 . 每个组,我希望数据帧两个保持相同的长度,所以不到一秒的差值将是所有重复值,我到目前为止尝试:
>>> df.groupby('dt',as_index=False)['value'].sum()
dt value
0 2018-12-10 16:35:34.246 1
1 2018-12-10 16:36:34.243 2
2 2018-12-10 16:38:34.216 3
3 2018-12-10 16:42:34.123 4
>>>
但是如您所见,数据框没有更改,因为这些组的等值为 'dt'
列 .
我想要的输出是:
dt value
0 2018-12-10 16:35:34.246 3
1 2018-12-10 16:36:34.243 3
2 2018-12-10 16:38:34.216 3
3 2018-12-10 16:42:34.123 4
2 回答
(假设你的意思是前两个具有相同的分钟值 . )
我不知道如何使用groupby,但这里有相同的结果:
作为旁注,我研究了
groupby
做同样的事情,但我无法弄清楚如何让它发挥作用 . 您可以将函数传递给groupby
方法 . 如果您选择走这条路线,请注意该功能是接收Dataframe的索引 . 让's me think it would be hard to use the groupby since I don' t知道一行可以属于多个组......一个强力解决方案是获取
datetime
系列和每个datetime
值之间的绝对差值,然后与阈值进行比较: