Skip to main content
 首页 » 编程设计

python之如何删除 Pandas 数据框中的重复值

2025年05月04日21lovecherry

我有一个如下所示的数据框:

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