2017-05-18 4 views
0

auf dieser letzten Stunde aufgeklebt, und konnte keinen Thread hier gefunden ..Update-Pandas Spalte mit einem anderen Datenrahmen ohne zwingende bestehenden

Unter der Annahme einer Datenrahmen gilt:

sample_id | value 
0   NAN 
1   NAN 
2   NAN 
3   NAN 
... 
19990  NAN 

ich viele haben anderer Datenrahmen, die sehr kleine Teilmengen des Obigen sind. zB:

sample_id | value 
0   2 
1   4 

und

sample_id | value 
194   2 
200   4 

Wie würde ich die Werte in der ersten Datenrahmen mit der zweiten Datenrahmen aktualisieren, aber alles andere unverändert bleibt? Karte verwenden() überschreibt die Werte, so dass nachfolgende Updates, die zuvor geschriebenen Werte entfernen ..

Vorgesehen Ergebnis:

df = df (DF2) df = df (df3)

final df..:

sample_id | value 
0   2 
1   4 
..    
194   2 
200   4 
.. 
19990  NAN 

ich weiß, ich Schleifen verwenden kann, aber ich bin sicher, theres eines schnellere Lösung, das ist am Rande am Horizont, die ich herausgefunden habe ..

Danke! :)

+0

[dataframe.copy] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame .copy.html), um eine Kopie des ersten Datenrahmens zu erstellen, und dann daran arbeiten, wenn Sie es ändern wollen? Wie du bemerkt hast, erstellt Pandas keine Kopien, außer wenn es nötig ist. – bouteillebleu

Antwort

1

Verwenden combine_first

df = pd.DataFrame({'Sample_id':pd.np.arange(0,10000),'value':pd.np.nan}) 

df1 = pd.DataFrame({'Sample_id':[3,4],'value':[2,4]}) 

df.set_index('Sample_id', inplace=True) 

df1.set_index('Sample_id', inplace=True) 

df_out = df1.combine_first(df) 
print(df_out.head(10) 

Ausgang:

  value 
Sample_id  
0   NaN 
1   NaN 
2   NaN 
3   2.0 
4   4.0 
5   NaN 
6   NaN 
7   NaN 
8   NaN 
9   NaN 
+0

kann NA nicht in ganzzahligen Fehler umwandeln :( – Wboy

+0

Haben Sie einige null sample_ids? –

+0

nein, sample_id ist eine Spalte nicht die Indexspalte im angst – Wboy

Verwandte Themen