删除连续的重复项。离开中间
这是我的数据帧:
dt value
2000-01-01 00:00:00 296.0
2000-01-01 00:05:00 296.0
2000-01-01 00:10:00 296.0
2000-01-01 00:15:00 296.25
2000-01-01 00:20:00 296.25
2000-01-01 00:25:00 296.25
2000-01-01 00:30:00 296.25
2000-01-01 00:35:00 296.25
2000-01-01 00:40:00 296.25
2000-01-01 00:45:00 296.5
2000-01-01 00:50:00 296.5
2000-01-01 00:55:00 296.5
2000-01-01 01:00:00 296.5
2000-01-01 01:05:00 296.5
2000-01-01 01:10:00 296.5
2000-01-01 01:15:00 296.75
2000-01-01 01:20:00 296.75
2000-01-01 01:50:00 297.0
2000-01-01 01:55:00 297.0
2000-01-01 02:00:00 297.0
2000-01-01 02:05:00 297.0
2000-01-01 02:10:00 297.0
2000-01-01 02:15:00 297.0
我想删除相邻的重复项。
中间的副本应该保留。如果重复的数量是偶数,则从中间取下一个。如果有 2 个重复,请第二个。
预期输出:
dt value
2000-01-01 00:05:00 296.0
2000-01-01 00:30:00 296.25
2000-01-01 01:00:00 296.5
2000-01-01 01:20:00 296.75
2000-01-01 02:05:00 297.0
我读了这篇关于重复的帖子,但它不满足我选择中间元素的条件。
Pandas:删除连续的重复项
回答
用 -
df.groupby(['value'])['dt'].apply(lambda x: x.iloc[math.floor(len(x)/2)])
输出
value
296.00 2000-01-01 00:05:00
296.25 2000-01-01 00:30:00
296.50 2000-01-01 01:00:00
296.75 2000-01-01 01:20:00
297.00 2000-01-01 02:05:00
Name: dt, dtype: object
不用说,你必须 import math
时间安排
@ALollz
3.82 ms ± 442 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
这个
2.09 ms ± 129 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)