Удалить строки при нескольких условиях в панде - PullRequest
0 голосов
/ 22 сентября 2018

У моего df есть 3 столбца

df = pd.DataFrame({"col_1": (0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0), 
                   "col_2": (0.0, 0.24, 1.0, 0.0, 0.22, 3.11, 0.0),
                    "col_3": ("Mon", "Tue", "Thu", "Fri", "Mon", "Tue", "Thu")}) 

Я хочу удалить строки, где df.col_1 равен 1.0, а df.col_2 равен 0.0.Итак, я бы получил:

df = pd.DataFrame({"col_1": (0.0, 0.0, 1.0, 0.0, 1.0), 
                   "col_2": (0.0, 0.24, 1.0, 0.22, 3.11),
                    "col_3": ("Mon", "Tue", "Thu", "Mon", "Tue")})

Я пытался:

df_new = df.drop[df[(df['col_1'] == 1.0) & (df['col_2'] == 0.0)].index]

Это дает мне ошибку:

'method' object is not subscriptable

Любая идея, как решить вышеуказанную проблему

Ответы [ 3 ]

0 голосов
/ 22 сентября 2018

drop - это метод, вы вызываете его с помощью [], поэтому он дает вам:

'method' object is not subscriptable

изменить на () (обычный вызов метода)и он должен работать:

import pandas as pd

df = pd.DataFrame({"col_1": (0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0),
                   "col_2": (0.0, 0.24, 1.0, 0.0, 0.22, 3.11, 0.0),
                   "col_3": ("Mon", "Tue", "Thu", "Fri", "Mon", "Tue", "Thu")})

df_new = df.drop(df[(df['col_1'] == 1.0) & (df['col_2'] == 0.0)].index)
print(df_new)

Выход

   col_1  col_2 col_3
0    0.0   0.00   Mon
1    0.0   0.24   Tue
2    1.0   1.00   Thu
4    0.0   0.22   Mon
5    1.0   3.11   Tue
0 голосов
/ 22 ноября 2018

Вы можете использовать оператор или (|) для этого. Для этого обратитесь по этой ссылке pandas: несколько условий при индексации фрейма данных - непредвиденное поведение

т.е. удаление строк при выполнении обоих условий

 df = df.loc[~((df['col_1']==1) | (df['col_2']==0))]
0 голосов
/ 22 сентября 2018

Попробуйте отфильтровать ваш df с помощью loc.Это так мощно.«~» Означает, что вы хотите противоположности своего состояния.«:» Означает, что вы хотите сохранить все столбцы

df = df.loc[~((df['col_1'] == 1.0) & (df['col_2'] == 0.0)),:]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...