我有一个看起来像这样的数据框:
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值。我不想遍历每一行,因为它是一个非常大的数据框,并且感觉像熊猫实践欠佳。我希望能找到一种不错的方法,但到目前为止我还没有找到。
非常感谢
答案 0 :(得分:5)
如果我对您的理解正确,那么您想丢弃连续重复项,我们可以在此处将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