Я новичок в pandas и хочу очистить фрейм данных с множеством столбцов.
Я хочу сохранить значения, попадающие в диапазон, указанный c для каждого столбца, например, для столбца с именем «Возраст», я хочу сохранить значения больше 5 и меньше 25. Если значение выходит за пределы из этого диапазона я хочу заменить его на NaN, например, в столбце «Возраст» есть значение 918, которое я хочу заменить.
В своей попытке я использую словарь, потому что, как я уже сказал, у меня много столбцов. Этот код не работает, потому что на самом деле он не изменяет ни одно из значений в моем исходном фрейме данных (без сообщения об ошибке).
Спасибо за любую помощь!
# PACKAGES
import pandas as pd
import numpy as np
# STARTING DATA
data = [[1.0, 10, 0], [0.0, 12, 0.4], [2.0, 918, 0.9]]
df = pd.DataFrame(data, columns = ['TriGly', 'Age', 'Chol'])
dict = {
'Age': (5, 25),
'Chol': (0.2, 1.2),
'TriGly': (0.0, 1.0)
}
# CLEAN
for column_name in df.columns:
if column_name in dict:
for row in df[column_name]:
if dict[column_name][0] < row < dict[column_name][1]:
row = row
else:
row = np.nan
# DESIRED DATA
data2 = [[1.0, 10, np.nan], [0.0, 12, 0.4], [np.nan, np.nan, 0.9]]
df2 = pd.DataFrame(data2, columns = ['TriGly', 'Age', 'Chol'])