sort inplace index example python pandas

python - inplace - Agregando pandas Series con diferentes índices sin obtener NaNs.



python pandas dataframe apply (3)

Podrías usar 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

Estoy tratando de hacer lo que creo que es una operación directa en pandas pero parece que no puedo hacer que funcione.

Tengo dos series de pandas con diferentes números de índices, me gustaría agregar valores juntos si comparten un índice, de lo contrario me gustaría pasar los valores que no tienen índices correspondientes.

Por ejemplo

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) dan

A 6 B NaN C 9 D NaN

Pero lo que quiero es

A 6 B 2 C 9 D 4

donde los valores B y D para Sr1 simplemente se pasan.

¿Alguna sugerencia?


Una solución usando 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


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

Un enfoque alternativo utilizando fillna. Funcionará en todos los casos cuando los índices no coincidan demasiado