Панды - последовательные значения должны быть разными

Я хочу сделать выборку строк в кадре данных таким образом, чтобы все пары последовательных значений в данном столбце были разными, если 2 из них одинаковы, оставьте, скажем, первый.

Вот пример

p = [1,1,2,1,3,3,2,4,3]
t = range(len(p))
df = pd.DataFrame({'t':t, 'p':p})

df

   p  t
0  1  0
1  1  1
2  2  2
3  1  3
4  3  4
5  3  5
6  2  6
7  4  7
8  3  8



desiredDf

   p  t
0  1  0
2  2  2
3  1  3
4  3  4
6  2  6
7  4  7
8  3  8

В требуемом Df все 2 последовательных значения в столбце p различны.

1 ответ

Решение

Как насчет этого?

>>> df[df.p != df.p.shift()]
   p  t
0  1  0
2  2  2
3  1  3
4  3  4
6  2  6
7  4  7
8  3  8

Объяснение: df.p.shift() сдвигает записи столбца p вниз по ряду. df.p != df.p.shift() проверяет, что каждая запись df.p отличается от предыдущей записи, возвращая логическое значение.

Этот метод работает с столбцами с любым количеством последовательных записей: например, если выполняется три идентичных значения, возвращается только первое значение в этом цикле.

Другие вопросы по тегам