El conjunto de datos contiene una columna Pclass con valores (1, 2, 3) y Edad. La columna Edad tiene algunos valores nulos. Quiero reemplazar esos valores nulos con la edad media de las personas en diferentes clases. La edad promedio de las personas en 1ra clase es 37, 2da clase es 29 y 3ra clase es 24.
Así que aquí está el código de lo que estoy tratando de hacer:
def fill_age(x): if pd.isna(x['Age']) and x['Pclass'] == 1: return 37 elif pd.isna(x['Age']) and x['Pclass'] == 2: return 29 elif pd.isna(x['Age']) and x['pclass'] == 3: return 24 else: return x['Age'] df['Age'] = df.apply(fill_age)Pero este es el error que estoy recibiendo:
KeyError Traceback (most recent call last) <ipython-input-126-7375a6b3c119> in <module> ----> 1 df['Age'] = df.apply(fill_age) KeyError: 'Age'Por favor, hágame saber lo que estoy haciendo mal. Gracias de antemano.
Use DataFrame.apply por axis=1 :
df['Age'] = df.apply(fill_age, axis=1) Para el uso alternativo vectorizado (más rápido) Series.fillna con mapeo por Series.map por diccionario:
df['Age'] = df['Age'].fillna(df['Pclass'].map({1:37,2:29,3:24}))