删除pandas数据帧中具有相同值的连续行



如何仅删除pandas数据帧中具有相同值的连续三行(在下面的示例中,这将是整数"4"(。

考虑以下代码:

import pandas as pd
df = pd.DataFrame({
'rating': [4, 4, 3.5, 15, 5 ,4,4,4,4,4 ]
})
rating
0  4.0
1  4.0
2  3.5
3  15.0
4  5.0
5  4.0
6  4.0
7  4.0
8  4.0
9  4.0

我希望得到以下结果作为输出,其中三个连续的行包含值"0";4〃;正在删除:

0  4.0
1  4.0
2  3.5
3  15.0
4  5.0
5  4.0
6  4.0

每次存在新值时,首先获取一个组,然后使用GroupBy.head

new_df = df.groupby(df['rating'].ne(df['rating'].shift()).cumsum()).head(2)
print(new_df)
rating
0     4.0
1     4.0
2     3.5
3    15.0
4     5.0
5     4.0
6     4.0

boolean indexing:中使用GroupBy.cumcount作为计数器并在行中进行筛选

#filter consecutive groups less like 2 (python count from 0)
df= df[df.groupby(df['rating'].ne(df['rating'].shift()).cumsum()).cumcount().lt(2)]
print (df)
rating
0     4.0
1     4.0
2     3.5
3    15.0
4     5.0
5     4.0
6     4.0

最新更新