2013-06-17 44 views
5

Si consideri il seguente dataframe X:Pandas dataframe valori aggiornamento colonna con altri dataframe

Col A Col B 
1  2 
3  4 
5  6 

E il dataframe Y:

Col A Col B 
3  7 
8  9 

Fa esiste un costruito in funzione di panda che unirà i due dataframes, usando Col A come chiavi e aggiornando il valore in Col B se esiste, altrimenti append. Tale che l'uscita di questa funzione su X e Y è

Col A Col B 
1  2 
3  7 
5  6 
8  9 

Ho guardato in unione e di aggiornamento e aggiungere, ma non sembrano agire come voglio, aggiornare gli aggiornamenti di indice invece di Col A valore, unione non sovrascrive, ecc. Grazie!

risposta

3

Un modo per farlo è quello di concat poi drop the duplicates:

In [11]: df = pd.concat([dfX, dfY]) 

In [12]: df 
Out[12]: 
    ColA ColB 
0  1  2 
1  3  4 
2  5  6 
0  3  7 
1  8  9 

In [13]: df.drop_duplicates(cols=['ColA'], take_last=True) 
Out[13]: 
    ColA ColB 
0  1  2 
2  5  6 
0  3  7 
1  8  9 

Nota: l'argomento take_last significa che siete "l'aggiornamento da DFY".

+0

Nota2: Interessantemente nella risposta di ubutbu (cancellata) utilizza 'combine_first' (ma è risultato essere due volte più lento di questo metodo). –

+0

aha drop_duplica, non sapevo di quello, grazie! – TheoretiCAL