#python #python_3x #pandas #dataframe
Допустим у нас есть два датафрейма: test =pd.DataFrame(columns=['a','b'], data=[[1,2],[3,5],[5,7]]) test2 =pd.DataFrame(columns=['a','b'], data=[[1,2],[3,5]]) Таким образом получается что у одного есть индекс которого нет у другого. Теперь если мы сделаем сложение test+test2 мы получим: Есть ли возможность сделать так, чтобы в сумме датафреймов, в индексе которого не было в одном датафрейме, ставились значения датафрейма у которого был этот индекс, вместо NaN которые имеем сейчас??
Ответы
Ответ 1
Воспользуйтесь методом DataFrame.combine_first(other) после суммирования. Пример: Исходные DataFrame'ы: In [18]: d1 = pd.DataFrame(columns=['a','b'], data=[[1,2],[3,5],[5,7]]) In [19]: d2 = pd.DataFrame(columns=['a','b'], data=[[1,2],[3,5],[8,9]], index=[0,1,4]) In [20]: d1 Out[20]: a b 0 1 2 1 3 5 2 5 7 In [21]: d2 Out[21]: a b 0 1 2 1 3 5 4 8 9 Решение: In [22]: res = d1.add(d2).combine_first(d1).combine_first(d2) Результат: In [23]: res Out[23]: a b 0 2.0 4.0 1 6.0 10.0 2 5.0 7.0 4 8.0 9.0Ответ 2
Попробуйте через метод add(): sum = test.add(test2, fill_value=0) отсутствующие значения в другом датафрейме будут заполнены значением fill_value
Комментариев нет:
Отправить комментарий