Как я могу удалить дубликаты только тогда, когда они повторяются на следующей итерации через панд

#python #python-3.x #pandas #dataframe #data-cleaning

Вопрос:

Мой вопрос немного сбивает с толку, поэтому лучше показать, как выглядят мои входные и выходные данные. Я пытался немного поработать над этим, но каждый раз я захожу в тупик.

Ввод:

A B
1 a
2 a
3 b
4 b
5 c
6 c
7 a
8 a
9 b
10 c

Выход:

A B
1 a
3 b
5 c
7 a
9 b
10 c

Ответ №1:

Вы должны собираться вместе, как itertools.groupby здесь. Чтобы сделать что-то подобное в pandas, проверьте, не равен ли следующий элемент элементу curr. Мы можем использовать pd.Series.shift pd.Series.ne pd.Series.cumsum .

 grps = df['B'].ne(df['B'].shift()).cumsum()
df.groupby(grps).first()

    A  B
B       
1   1  a
2   3  b
3   5  c
4   7  a
5   9  b
6  10  c