2017-04-17 1 views
1

J'exécution le code suivantPandas équivalent de isnull pour les instructions de modification de la colonne

Q = pd.DataFrame([['a',1], ['b',2]], columns=['x','y']) 
W = pd.DataFrame([['a',1], ['c',8]], columns=['x', 'y']) 

Q.set_index(['x'], inplace=True) 
W.set_index(['x'], inplace=True) 

Q.y = Q.y + W.y 
display(mydata) 

et table de réception

y 
x 
a 3.0 
b NaN 

Il n'y a pas de ligne correspondante pour 'b' dans le tableau W et donc pandas géants fait (2 + NaN) qui se traduit par NaN. Est tout équivalent de isnull disponible en pandas géants afin de remplacer NaN zéro et obtenir

y 
x 
a 3.0 
b 2.0 

?

Je comprends, que c'est possible avec fusion, fill_nan. Mais je cherche un moyen sans fusionner.

Répondre

2

Il vous semble besoin add:

Q.y = Q.y.add(W.y, fill_value=0) 
print (Q) 
    y 
x  
a 2.0 
b 2.0 
+0

Grand merci. Et si je dois faire weight1 * Q.y + weigth2 * W.y? En fait, avec la syntaxe que vous avez montrée, je peux le faire comme weight1 * Q.y.add (weigth2/weigth1 * W.y, fill_value = 0). Est-ce un meilleur moyen? –