Несоответствующие показатели
Эта проблема состоит в том, что ваши 2 серии имеют разные индексы.Вот пример:
s1 = pd.Series([1, np.nan, 3, np.nan, 5], index=np.arange(5))
s2 = pd.Series([np.nan, 7, 8, np.nan, np.nan], index=np.arange(5)+10)
print(s1.add(s2, fill_value=0, axis=0))
0 1.0
1 NaN
2 3.0
3 NaN
4 5.0
10 NaN
11 7.0
12 8.0
13 NaN
14 NaN
dtype: float64
У вас есть 2 варианта: переиндексировать с помощью, например, словаря или игнорировать индексы и добавлять свою серию позиционно.
Картографический индекс одной серии для выравнивания сдругое
Вы можете использовать словарь для выравнивания.Отображение ниже является произвольным.NaN
значения появляются тогда, когда после переиндексации значения в обеих сериях равны NaN
:
index_map = dict(zip(np.arange(5) + 10, [3, 2, 4, 0, 1]))
s2.index = s2.index.map(index_map)
print(s1.add(s2, fill_value=0, axis=0))
0 1.0
1 NaN
2 10.0
3 NaN
4 13.0
dtype: float64
Пропуск индексов;использовать только позиционное местоположение
В этом случае вы можете либо создать новую серию с регулярным pd.RangeIndex
в качестве индекса (то есть 0, 1, 2, ...
), либо использовать индекс из одного изсерия ввода:
# normalized index
res = pd.Series(s1.values + s2.values)
# take index from s1
res = pd.Series(s1.values + s2.values, index=s1.index)