Supongamos que tengo un marco de datos de 5 * 3 en el que la tercera columna contiene un valor perdido
1 2 3
4 5 NaN
7 8 9
3 2 NaN
5 6 NaN
Espero generar valor para la regla basada en el valor perdido que el primer producto segunda columna
1 2 3
4 5 20 <--4*5
7 8 9
3 2 6 <-- 3*2
5 6 30 <-- 5*6
¿Cómo puedo usar el marco de datos? Gracias.
¿Cómo agregar una condición para calcular el valor perdido como este?
if 1st % 2 == 0 then 3rd = 1st * 2nd
else 3rd = 1st + 2nd
1 2 3
4 5 20 <-- 4*5 because 4%2==0
7 8 9
3 2 5 <-- 3+2 because 3%2==1
5 6 11 <-- 5+6 because 5%2==1
Respuestas:
Suponiendo que tres columnas de su marco de datos es
a
,b
yc
. Esto es lo que quieres:Código completo:
fuente
np.isnan
no admite datos no numéricos. No es un problema aquí ya que el OP tenía columnas numéricas y operaciones aritméticas, pero de lo contrariopd.isnull
es una mejor alternativa.Otra opción:
df.loc[(pd.isnull(df.C)), 'C'] = df.A * df.B
fuente
¿Qué pasa con el uso
fillna()
del marco de datos?df['C'].fillna(df.A * df.B)
fuente
Suponiendo que las tres columnas en su marco de datos son
a
,b
yc
. Entonces puede hacer la operación requerida de esta manera:fuente
np.where(pd.isnull(df.c), df.a * df.b, df.c)