Как удалить определенные значения в столбце DataFrame?

Необходимо удалить все значения в определенном столбце(вещественные числа), которые удовлетворяют условию - "Все числа которые больше 300.0". Я создал переменную, но не знаю, как удалить во Фрейме.

to_drop = [i for i in train.Fare if i > 300.0]

Как решить данную задачу?


Ответы (3 шт):

Автор решения: roddar92

Кажется, что будет легче провести обратную операцию: создать новый датафрейм из старого с теми строками, где числа из столбца Fare будут меньше или равны 300. Пример кода:

df = df[df.Fare <= 300]
→ Ссылка
Автор решения: passant

Если вы точно выразили свою мысль и хотите именно "удалить все значения в определенном столбце(вещественные числа), которые удовлетворяют условию" но оставить все остальные элементы Датафрейма без изменений, то это делается так:

df1 = pd.DataFrame({'x':[1,5,4,3,4,5],
                   'Fare':[100,200,300,400,500,100],
                   'w':[11,15,14,13,14,15]})
df1.loc[df1['Fare']>300,'Fare']='nan'

Результат:

   x Fare   w
0  1  100  11
1  5  200  15
2  4  300  14
3  3  nan  13
4  4  nan  14
5  5  100  15

А если со строками - то вот так:

df1=df1[df1['Fare']<=300]

Результат:

   x  Fare   w
0  1   100  11
1  5   200  15
2  4   300  14
5  5   100  15
→ Ссылка
Автор решения: MaxU

Можно воспользоваться методом DataFrame.query(...):

пример данных:

threshold = 300
np.random.seed(1234)
df = pd.DataFrame(np.random.randint(2000, size=(10, 3)), columns=list("abc"))

решение:

res = df.query("a <= @threshold")

результат:

      a     b      c
3   279  1257   1178
4    30  1707   1182
9   246   510   1455
→ Ссылка