【发布时间】:2020-04-23 06:05:06
【问题描述】:
我有一个 pandas 这样的数据框:
id time
1 1
2 3
3 4
4 5
5 8
6 8
我想删除相隔不到 2 秒的行。我首先计算连续行之间的时间差异并将其添加为列:
df['time_since_last_detect'] = df.time.diff().fillna(0)
导致:
id time time_since_last_detect
1 1 0
2 3 2
3 4 1
4 5 1
5 8 3
6 8 0
然后使用df[df.time_since_last_detect > 1] 过滤行,结果是:
id time time_since_last_detect
2 3 2
5 8 3
但是,这样做的问题是,一旦删除了一行,它就不会重新计算与新的前一行的差异。例如,在删除第一行和第三行之后,第二行和第四行之间的差值为 2。但是第四行仍然会被这个过滤器删除,我不希望发生这种情况。解决此问题的最佳方法是什么?这是我想要达到的结果:
id time time_since_last_detect
2 3 2
4 5 1
5 8 3
【问题讨论】:
-
您在这个问题中的第二个数据框与您的第一个不匹配。请参见第一个数据帧中的 id = 1, time= 0 和第二个数据帧中的 time =1。你能澄清一下吗?
-
@ScottBoston 是的,很抱歉造成混乱!我现在修好了