Rozważ ten słownik serii pand. Indeks we wszystkich seriach jest liczbami całkowitymi i ma pewne potencjalne pokrywanie się, ale z pewnością nie pokrywa się. Zrobiłem spostrzeżenie, że pd.concat
wydaje się powolne, gdy łączę rzeczy wzdłuż axis=1
, gdy mam duże indeksy, wiele nie nakładających się i wiele elementów do łączenia. To skłoniło mnie do opuszczenia axis=0
, a następnie unstack()
. Kończę z tym samym dokładnym wynikiem. Ale rozpakowywanie jest szybsze.Dlaczego pd.concat ({}, axis = 1) jest wolniejsze niż pd.concat ({}, axis = 0) .unstack (0)?
Czy ktoś ma pojęcie, dlaczego tak się dzieje?
Dostaję, że łącząca się seria jedna na drugiej powinna być szybka, ale zgadłbym, że procesy rozpakowywania byłyby prawie identyczne, jak w przypadku pd.concat(axis=1)
.
dict_of_series = {
's%s' % i: pd.Series(
1, np.unique(np.random.randint(1000, 10000, size=1000))
) for i in range(100)
}
%%timeit
pd.concat(dict_of_series, axis=0).unstack(0)
10 pętle, najlepsze 3: 29,6 ms na pętli
%%timeit
pd.concat(dict_of_series, axis=1)
10 pętle, najlepiej od 3: 43,1 ms na pętli