2016-04-12 1 views
1

Ich habe 2 Pandas Datenrahmen. Die zweite ist in der ersten enthalten. Wie kann ich die Werte in der ersten durch die in der zweiten ersetzen?Aktualisieren von Werten mit einem anderen Datenrahmen

betrachten Sie dieses Beispiel:

df1 = pd.DataFrame(0, index=[1,2,3], columns=['a','b','c']) 
df2 = pd.DataFrame(1, index=[1, 2], columns=['a', 'c']) 

ris= [[1, 0, 1], 
     [1, 0, 1], 
     [0, 0, 0]] 

und ris hat den gleichen Index und Spalten von d1

Eine mögliche Lösung ist:

for i in df2.index: 
    for j in df2.columns: 
    df1.loc[i, j] = df2.loc[i, j] 

Aber diese

Antwort

1

ich glaube, Sie copy mit combine_first verwenden:

df3 = df1.copy() 
df1[df2.columns] = df2[df2.columns] 
print df1.combine_first(df3) 
    a b c 
1 1.0 0 1.0 
2 1.0 0 1.0 
3 0.0 0 0.0 

Nächste Lösung leere neue DataFramedf4 mit index und columns schafft aus df1 und füllen Sie es mit Doppel combine_first:

df4 = pd.DataFrame(index=df1.index, columns=df1.columns) 
df4 = df4.combine_first(df2).combine_first(df1) 
print df4 
    a b c 
1 1.0 0.0 1.0 
2 1.0 0.0 1.0 
3 0.0 0.0 0.0 
0

Try hässlich

In [7]: df1['a'] = df2['a'] 

In [8]: df1['c'] = df2['c'] 

In [14]: df1[['a','c']] = df2[['a','c']] 

Wenn die Spaltennamen sind nicht bekannt:

In [25]: for col in df2.columns: 
    ....:  df1[col] = df2[col] 
+0

Betrachten Sie einen Fall mit vielen Spalten – Donbeo