Remplacer les valeurs de colonne en fonction d'un autre poneys pandas dataframe - une meilleure façon?

Remarque:pour des raisons de simplicité, je suis en utilisant un jouet exemple, parce que le copier/coller dataframes est difficile de débordement de pile (s'il vous plaît laissez-moi savoir si il ya un moyen facile de le faire).

Est-il un moyen de fusionner les valeurs d'un dataframe sur un autre sans obtenir le _X, _Y colonnes? J'aimerais que les valeurs d'une colonne à remplacer toutes les valeurs zéro d'une autre colonne.

df1: 

Name   Nonprofit    Business    Education

X      1             1           0
Y      0             1           0   <- Y and Z have zero values for Nonprofit and Educ
Z      0             0           0
Y      0             1           0

df2:

Name   Nonprofit    Education
Y       1            1     <- this df has the correct values. 
Z       1            1



pd.merge(df1, df2, on='Name', how='outer')

Name   Nonprofit_X    Business    Education_X     Nonprofit_Y     Education_Y
Y       1                1          1                1               1
Y      1                 1          1                1               1
X      1                 1          0               nan             nan   
Z      1                 1          1                1               1

Dans un précédent post, j'ai essayé combine_First et dropna(), mais ce n'est pas faire le travail.

Je veux remplacer les zéros dans df1 avec les valeurs df2.
En outre, je veux toutes les lignes avec le même nom à changer selon df2.

Name    Nonprofit     Business    Education
Y        1             1           1
Y        1             1           1 
X        1             1           0
Z        1             1           1

Ma solution existante effectue les opérations suivantes:
Je sous-ensemble fondé sur les noms qui existent dans df2, et de remplacer ces valeurs par la valeur correcte. Cependant, je voudrais un moins hacky façon de le faire.

pubunis_df = df2
sdf = df1 

regex = str_to_regex(', '.join(pubunis_df.ORGS))

pubunis = searchnamesre(sdf, 'ORGS', regex)

sdf.ix[pubunis.index, ['Education', 'Public']] = 1
searchnamesre(sdf, 'ORGS', regex)

source d'informationauteur user3314418