pandas выбор кадра данных каждый новый индекс - PullRequest
0 голосов
/ 04 мая 2020

Я ищу простой способ выбора определенных c значений из pandas кадра данных df.

строки моего df выглядят так: отредактировано, чтобы сделать его более понятным

('df_c',     index   edge_id   source   target       dist      length     offset        ep
0       0   3993733  2072680  3740467   7.400719   66.983482  50.293263  0.989106
1       0   9337850  3740467  2072680   7.400719   66.983482  16.690219  0.989106
2       0   3993735  3740467  3740468  18.257438   51.693102   0.000000  0.935507
3       0   3993736  3740467  3740470  18.257438   80.415746   0.000000  0.935507
4       0   9337852  3740468  3740467  18.257438   51.693102  51.693102  0.935507
5       0   9337853  3740470  3740467  18.257438   80.415746  80.415746  0.935507
6       0   4917163  5293212  5474940  50.474509  113.242490  47.964551  0.600775
7       0  10261280  5474940  5293212  50.474509  113.242490  65.277939  0.600775
8       1   3993733  2072680  3740467   8.627149   66.983482  56.266520  0.985225
9       1   9337850  3740467  2072680   8.627149   66.983482  10.716962  0.985225
10      1   3993735  3740467  3740468  10.319909   51.693102   9.098376  0.978925
11      1   9337852  3740468  3740467  10.319909   51.693102  42.594727  0.978925
12      1   3993736  3740467  3740470  13.757942   80.415746   0.000000  0.962851
13      1   9337853  3740470  3740467  13.757942   80.415746  80.415746  0.962851
14      1   4565277  2072680  2072681  56.667011   53.626811   5.403604  0.526118
15      1   9909394  2072681  2072680  56.667011   53.626811  48.223207  0.526118)

Моя цель состоит в том, чтобы выбрать каждую строку [1] (df ["index"]) с новым индексом. Так что это будет df.index 0, 8 и т. Д. ...

есть ли другой способ вместо итерации по всему df и проверки на изменение индекса в строке [1] (df [ "index"])?

Я знаю, что есть способ выбора каждой n-й строки, например: df.iloc [0 :: n,:], но изменение индекса в строке [1] (df ["index"]) не всегда имеет одинаковую последовательность ...

1 Ответ

0 голосов
/ 04 мая 2020

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

df[(df.column1 - df.column1.shift(1)) >= 1]

, кажется, работает. Обратите внимание, что смещение обычно происходит в направлении, противоположном тому, которое вы хотите выполнить, потому что вы не сравниваете их один за другим, вы создаете сдвинутую версию вектора, а затем сравниваете весь вектор сразу. Чтобы выровнять текущие и предыдущие значения для их сравнения, необходимо сместить вектор вперед , чтобы получить оба значения в одном и том же образце.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...