我有一个如下所示的数据框:
Time x y
00:10:00 5.4 4.2
00:20:00 6.2 5.2
00:30:00 4.1 5.2
00:40:00 5.8 5.2
00:50:00 5.1 3.8
我需要找到一种方法来删除 y 中的连续重复值 (5.2)。我不能使用 pd.drop_duplicates(),因为那样会从数据中删除真正的 5.2 值。我宁愿不遍历每一行,因为它是一个非常大的数据框,感觉就像糟糕的 Pandas 练习。我希望有一个很好的方法我错过了,但到目前为止我的搜索中还没有找到。
非常感谢
请您参考如下方法:
如果我没理解错的话,你想删除连续的重复项,我们可以使用boolean indexing与 .shift和 .ne在这里。
注意:我用 1 行扩展了您的数据框以显示该方法有效:
# Extended example dataframe
Time x y
0 00:10:00 5.4 4.2
1 00:20:00 6.2 5.2
2 00:30:00 4.1 5.2
3 00:40:00 5.8 5.2
4 00:50:00 5.1 3.8
5 00:60:00 3.3 5.2
m = df['y'].shift().ne(df['y'])
df[m]
Time x y
0 00:10:00 5.4 4.2
1 00:20:00 6.2 5.2
4 00:50:00 5.1 3.8
5 00:60:00 3.3 5.2
ne 等同于 != 并代表不等于:
df['x'] != 5.4
df['x'].ne(5.4)
0 False
1 True
2 True
3 True
4 True
5 True
Name: x, dtype: bool
0 False
1 True
2 True
3 True
4 True
5 True
Name: x, dtype: bool
