Особенности операции заполнения данных с reindex
Для проведении операции по несовпадающим индексам часто пользуются методом reindex, поведение которого в условиях наличия пропусков может показаться неожиданным. Создадим и суммируем две серии:
import pandas as pd import numpy as np ser = pd.Series([1,2,np.nan,3], index=['one', 'two', 'three', 'four']) ser_add = pd.Series([1,2,np.nan,3], index=['three','four', 'five', 'six']) ser+ser_add
Как можно заметить, ввиду различий в индексах операция только в одном случае дает результат. Если же вы хотите сохранить информацию следует создать общий индекс:
combo_index = ser.index.union(ser_add.index) combo_index
Дальше переиндексировать серии по новому индексу и заполнить пропуски нулем. Для последней операции часто используют аргумент fill_value:
ser.reindex(combo_index, fill_value=0) + ser_add.reindex(combo_index, fill_value=0)
Как можно заметить, с fill_value не происходит заполнение первичных пропусков, которые имелись до переиндексации серии. Поэтому правильнее было сделать так:
ser.reindex(combo_index).fillna(0) + ser_add.reindex(combo_index).fillna(0)
Поэтому помните, что fill_value заполняет только пропуски полученные в результате переиндексации и пользуйтесь fillna.