Chcę dodać dwie Serie w Pandach i używam funkcji add(), aby zrobić to w ten sposób:

import pandas as pd
import numpy as np
a = pd.Series([35000,71000,16000,5000],index=['Ohio','Texas','Oregon','Utah'])
b = pd.Series([np.nan,71000,16000,35000],index=['California', 'Texas', 'Oregon', 'Ohio'])
print(a.add(b, fill_value=0))

Wydrukuje:

California         NaN
Ohio           70000.0
Oregon         32000.0
Texas         142000.0
Utah            5000.0
dtype: float64

Ta metoda sortuje moje indeksy, ale nie chcę

Co mogę zrobić lub Jakiej metody mogę użyć?

0
ariankazemi 24 styczeń 2022, 17:10
Jaki byłby oczekiwany wynik?
 – 
mozway
24 styczeń 2022, 17:18

2 odpowiedzi

Najlepsza odpowiedź

Oczekiwany wynik jest niejasny, ale zakładając, że chcesz zachować dokładny indeks a, możesz zrobić:

a.add(b.reindex_like(a), fill_value=0)

Wynik:

Ohio       70000.0
Texas     142000.0
Oregon     32000.0
Utah        5000.0
dtype: float64
1
mozway 24 styczeń 2022, 17:19

Jeśli indeksy nie mają znaczenia, możesz po prostu dodać values serii, np.

c = a.values + b.values

Zwraca tę tablicę numpy:

array([    nan, 142000.,  32000.,  40000.])

Wygląda na to, że możesz również chcieć wpisać 0 dla nans — w takim przypadku spróbuj tego:

c = a.fillna(0).values + b.fillna(0).values
0
bsauce 24 styczeń 2022, 17:20