Обрезка каждой n-й строки в фрейме данных в Python - PullRequest
0 голосов
/ 23 мая 2019

У меня есть датафрейм с такими столбцами, как:

x   y   z
1   10  20
2   10  18
3   11  16.5
4   11  12
5   12  23
6   11  21
7   10  19
8   10  26
.
.

Каждый раз, когда z_n + 1 больше, чем z_n, я хочу вырезать этот z_n.

Вывод будет:

x   y   z
1   10  20
2   10  18
3   11  16.5
5   12  23
6   11  21
8   10  26
.
.

Это происходит не каждый х-много раз - индекс каждого изменения от меньшего к большему z_n не является «регулярным».

Есть ли простой способ сделать это?

Ответы [ 2 ]

2 голосов
/ 23 мая 2019

Мы можем использовать shift, чтобы оглянуться назад на одну строку и взять обратное с ~:

df[~(df['z'].shift() < df['z'])]

   x   y     z
0  1  10  20.0
1  2  10  18.0
2  3  11  16.5
3  4  11  12.0
5  6  11  21.0
6  7  10  19.0
1 голос
/ 23 мая 2019

Попробуйте:

df[~(df.z.diff(-1) < 0)]

Выход:

   x   y     z
0  1  10  20.0
1  2  10  18.0
2  3  11  16.5
4  5  12  23.0
5  6  11  21.0
7  8  10  26.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...