Supposons que j'ai une trame de données 5 * 3 dans laquelle la troisième colonne contient une valeur manquante
1 2 3
4 5 NaN
7 8 9
3 2 NaN
5 6 NaN
J'espère générer de la valeur pour la règle basée sur la valeur manquante que le premier produit deuxième colonne
1 2 3
4 5 20 <--4*5
7 8 9
3 2 6 <-- 3*2
5 6 30 <-- 5*6
Comment puis-je utiliser la trame de données? Merci.
Comment ajouter une condition pour calculer une valeur manquante comme celle-ci?
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
Réponses:
En supposant que trois colonnes de votre trame de données sont
a
,b
etc
. Voici ce que vous voulez:Code complet:
la source
np.isnan
ne prend pas en charge les données non numériques. Ce n'est pas un problème ici car l'OP avait des colonnes numériques et des opérations arithmétiques, mais sinonpd.isnull
c'est une meilleure alternative.Une autre option:
df.loc[(pd.isnull(df.C)), 'C'] = df.A * df.B
la source
Qu'en est-il de l'utilisation de la
fillna()
méthode de la trame de données?df['C'].fillna(df.A * df.B)
la source
En supposant que les trois colonnes de votre trame de données sont
a
,b
etc
. Ensuite, vous pouvez effectuer l'opération requise comme ceci:la source
np.where(pd.isnull(df.c), df.a * df.b, df.c)