Панды - последовательные значения должны быть разными
Я хочу сделать выборку строк в кадре данных таким образом, чтобы все пары последовательных значений в данном столбце были разными, если 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
отличается от предыдущей записи, возвращая логическое значение.
Этот метод работает с столбцами с любым количеством последовательных записей: например, если выполняется три идентичных значения, возвращается только первое значение в этом цикле.