2013-07-23 6 views
0

Я выполняю итерацию через рамку данных в Pandas по одной строке за раз. Я проверяю, соответствует ли эта строка определенному набору условий или нет. Затем я хотел бы отказаться от строки. Как я могу это сделать?Удаление строк в pandas

ответ

1

Это зависит от ваших критериев для того, чтобы держать его, простой способ создать тестовую функцию:

In [11]: def keep_row(row): 
      return True # you may want to make this stricter... 

In [12]: df.apply(keep_row, axis=1) 

Тогда вы можете сохранить только те хорошие строки:

In [13]: df = df[df.apply(keep_row, axis=1)] 

It может быть быстрее, если вы можете каким-то образом разработать векторизовать (использовать numpy для описания) условие сохранения строки, но трудно предположить, как без конкретного примера.

+0

Есть ли способ передать значения, которые я хочу в функции? Скажем, что у меня есть кадр данных с столбцами A, B и C, и я хочу использовать функцию, которая использует два столбца: A и B. – user1867185

+1

Отредактируйте оригинальный вопрос, чтобы включить пример, который вы имеете в виду. Бонусные баллы за включение пробных данных и ожидаемого результата. Ответ на ваш вопрос - да, но его пример гораздо сложнее объяснить. – TomAugspurger

+0

@ user1867185 да, просто возьмите их, используя строку ['A'], строку ['B'] и т. Д. Внутри функции –

0

Первое правило панд заключается в том, что если вы повторяете строки, вы, вероятно, делаете это неправильно. Чтобы удалить строки, удовлетворяющие критериям, просто выберите те, которые не соответствуют критериям, например. из которых вы хотите удалить строки со столбцом A == "rrr":

df = df[df.A!="rrr"] 
Смежные вопросы