Как удалить определенные значения в столбце DataFrame?
Необходимо удалить все значения в определенном столбце(вещественные числа), которые удовлетворяют условию - "Все числа которые больше 300.0". Я создал переменную, но не знаю, как удалить во Фрейме.
to_drop = [i for i in train.Fare if i > 300.0]
Как решить данную задачу?
Ответы (3 шт):
Кажется, что будет легче провести обратную операцию: создать новый датафрейм из старого с теми строками, где числа из столбца Fare будут меньше или равны 300. Пример кода:
df = df[df.Fare <= 300]
Если вы точно выразили свою мысль и хотите именно "удалить все значения в определенном столбце(вещественные числа), которые удовлетворяют условию" но оставить все остальные элементы Датафрейма без изменений, то это делается так:
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
Можно воспользоваться методом 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