Dev Faq
3
votes

Remplir les valeurs nulles dans les pandas en fonction de la valeur dans une autre colonne de manière conditionnelle

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

python pandas dataframe null nan

2 commentaires

Double possible de Pandas remplissent les valeurs manquantes dans le dataframe d'une autre dataframe


@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.


3 Réponses :


3
votes

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)
)


0 commentaires

1
votes

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


0 commentaires

1
votes

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)


0 commentaires

Articles qui pourrait vous intéresser :

Python: ConnectionError: HTTPSConnectionPool (hôte = 'api.foursquare-com', port = 443)
L'exécution de Flask sous Windows n'exécute pas la commande d'exécution de flask
Chatbot installé mais obtention d'une erreur lors de l'importation de ChatBot
Administrateur Django: __str__ a renvoyé une non-chaîne (type int)
© 2020 www.devfaq.fr - Licensed under  cc by-sa 3.0  with  attribution required.