comment remplir des valeurs nulles dans une ligne en fonction de la valeur d'une autre colonne.
A B 0 5 1 NAN 1 6 0 6 ``` it want it to be like this
pour la valeur nulle dans B si la valeur correspondante dans A est 0 alors remplissez avec la valeur précédente.
A B 0 5 1 NAN 1 6 0 NAN
3 Réponses :
numpy.where
+ isnull
+ ffill
A B 0 0 5.0 1 1 NaN 2 1 6.0 3 0 6.0
df.assign( B=np.where(df.A.eq(0) & df.B.isnull(), df.B.ffill(), df.B) )
Une autre façon d'utiliser loc,
df.loc[df['A'].eq(0), 'B'] = df['B'].ffill() A B 0 0 5 1 1 NaN 2 1 6 3 0 6
Un moyen plus rapide (par rapport aux précédents):
A B 0 0 5.0 1 1 NaN 2 1 6.0 3 0 6.0
et vous obtenez:
import pandas as pd import numpy as np df = pd.DataFrame({'A':[0,1,1,0], 'B':[5,np.nan,6,np.nan]}) df.B = np.where(df.A==0, df.B.ffill(), df.B)
Double possible de Pandas remplissent les valeurs manquantes dans le dataframe d'une autre dataframe a>
@MichaelHeidelberg cette question pose des questions sur le remplissage des valeurs nulles basées sur un index commun, pas sur une condition sur une autre colonne et la valeur précédente.