Как сложить два DataFrame?
Имеется 2 DataFrame:
[1, 1, 1]
[1, 1, 1]
[1, 1, 1]
И
[2, 3, 2]
[2, 3, 2]
[2, 3, 2]
Индексы и названия столбцов в обоих случаях абсолютно одинаковые.
Каким методом мне правильнее будет воспользоваться, чтобы на выходе получить DataFrame видa:
[3, 4, 3]
[3, 4, 3]
[3, 4, 3]
Не могу разобраться как и что мне использовать.
Ответы (1 шт):
Для объекта pandas.DataFrame переопределены арифметические операторы, поэтому можно просто сложить два фрейма:
res = df1 + df2
Это будет правильно работать только в том случае, если совпадают наименования столбцов и значения индексов (порядок столбцов / индексов может различаться). При выполнении арифметических операций между фреймами Pandas сначала делает выравнивание по столбцам и строкам. Поэтому следующий пример отработает правильно даже несмотря на несовпадающий порядок столбцов:
In [30]: d1
Out[30]:
a b c
0 1 1 1
1 1 1 1
2 1 1 1
In [31]: d2
Out[31]:
c a b
0 2 2 3
1 2 2 3
2 2 2 3
In [32]: d1 + d2
Out[32]:
a b c
0 3 4 3
1 3 4 3
2 3 4 3
Если же нам нужно прибавить значения совпадающего по размерности фрейма, но с отличными столбцами/индексами то это можно сделать прибавив к датафрейму Numpy матрицу совпадающей размерности (обратите внимание на несовпадающие столбцы и индексы):
In [37]: d1
Out[37]:
a b c
0 1 1 1
1 1 1 1
2 1 1 1
In [38]: d3
Out[38]:
X Y Z
11 4 5 4
12 4 5 4
13 4 5 4
In [39]: d1 + d3.to_numpy()
Out[39]:
a b c
0 5 6 5
1 5 6 5
2 5 6 5