Как я могу удалить строки фрейма данных, если значения указанного столбца не увеличиваются строго? - PullRequest
0 голосов
/ 17 октября 2018

Хорошо, я думаю, что это должно быть довольно просто с помощью оператора if в пределах понимания списка.В любом случае, я не знаю, как с этим справиться.

Как вы можете видеть ниже, я бы хотел перебрать строки и удалить эти строки там, где текущее значение столбец "1" меньше, чем ранее.

Я хотел бы создать новый фрейм данных только с увеличивающимися значениями. Я не хочу сортировать данные.

print (df)
                0      1
649  1.244399e-09   9.07
648  1.152221e-09   9.00
647  1.075406e-09   8.96
646  1.013954e-09   8.92
645  9.371397e-10   8.88
644  2.243742e-09   9.57
643  2.113292e-09   9.50
642  1.956752e-09   9.42
641  1.826302e-09   9.37
640  1.721942e-09   9.33
639  1.591492e-09   9.28
638  1.487131e-09   9.23
637  1.408861e-09   9.19
636  1.304501e-09   9.14
635  4.809608e-09  10.32

Ответы [ 2 ]

0 голосов
/ 17 октября 2018
l = [x for x in df.index if x > 0 and df[x]['column1'] > df[x - 1]['column1']]

в l вы сохраняете весь индекс нужных вам строк, а затем переходите к оператору loc.

df2 = df.loc[l]
0 голосов
/ 17 октября 2018

Использование Series.diff с фильтрацией по boolean indexing:

#if need first and second value for increasing second value
#df1 = df[df[1].diff().bfill() > 0]
df1 = df[df[1].diff() > 0]
print (df1)
                0      1
644  2.243742e-09   9.57
635  4.809608e-09  10.32

Деталь :

print (df[1].diff())
649     NaN
648   -0.07
647   -0.04
646   -0.04
645   -0.04
644    0.69
643   -0.07
642   -0.08
641   -0.05
640   -0.04
639   -0.05
638   -0.05
637   -0.04
636   -0.05
635    1.18
Name: 1, dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...