2012-09-20 13 views
17

Sto provando a fare ciò che ritengo sia un'operazione dritta per i panda ma non riesco a farlo funzionare.Aggiunta di serie di panda con diversi indici senza ottenere NaN

Ho due serie di panda con diversi numeri di indici, vorrei aggiungere valori insieme se condividono un indice, altrimenti vorrei solo passare i valori che non hanno indici corrispondenti lungo.

Per esempio

Sr1 = pd.Series([1,2,3,4], index = ['A', 'B', 'C', 'D']) 
Sr2 = pd.Series([5,6], index = ['A', 'C']) 
Sr1  Sr2 
A  1 A  5 
B  2 C  6 
C  3 
D  4 

Sr1 + Sr2 o Sr1.add(Sr2) dare

A  6 
B NaN 
C  9 
D NaN 

Ma quello che voglio è

A  6 
B  2 
C  9 
D  4 

dove i B e D valori per Sr1 sono solo passati insieme.

Qualche suggerimento?

risposta

38

Si potrebbe utilizzare fill_value:

>>> import pandas as pd 
>>> Sr1 = pd.Series([1,2,3,4], index = ['A', 'B', 'C', 'D']) 
>>> Sr2 = pd.Series([5,6], index = ['A', 'C']) 
>>> Sr1+Sr2 
A  6 
B NaN 
C  9 
D NaN 
>>> Sr1.add(Sr2, fill_value=0) 
A 6 
B 2 
C 9 
D 4 
0

Una soluzione con fillna():

>>> import pandas as pd 
>>> Sr1 = pd.Series([1, 2, 3, 4], index = ['A', 'B', 'C', 'D']) 
>>> Sr2 = pd.Series([5, 6], index = ['A', 'C']) 
>>> (Sr1 + Sr2).fillna(Sr1 + 0) 
A 6.0 
B 2.0 
C 9.0 
D 4.0 
Problemi correlati