Страницы

Поиск по вопросам

среда, 26 февраля 2020 г.

Сумма двух DataFrame

#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

Комментариев нет:

Отправить комментарий