Чтобы найти разницу между любыми двумя столбцами в кадре данных pandas, вы можете использовать следующий синтаксис:
df['difference'] = df['column1'] - df['column2']
В следующих примерах показано, как использовать этот синтаксис на практике.
Пример 1. Найдите разницу между двумя столбцами
Предположим, у нас есть следующий кадр данных pandas, который показывает общий объем продаж для двух регионов (A и B) в течение восьми последовательных периодов продаж:
import pandas as pd
#create DataFrame
df = pd.DataFrame({'period': [1, 2, 3, 4, 5, 6, 7, 8],
'A_sales': [12, 14, 15, 13, 18, 20, 19, 24],
'B_sales': [14, 19, 20, 22, 24, 20, 17, 23]})
#view DataFrame
df
period A_sales B_sales
0 1 12 14
1 2 14 19
2 3 15 20
3 4 13 22
4 5 18 24
5 6 20 20
6 7 19 17
7 8 24 23
В следующем коде показано, как рассчитать разницу между продажами в регионе B и регионе A для каждого периода продаж:
#add new column to represent difference between B sales and A sales
df['diff'] = df['B_sales'] - df['A_sales']
#view DataFrame
df
period A_sales B_sales diff
0 1 12 14 2
1 2 14 19 5
2 3 15 20 5
3 4 13 22 9
4 5 18 24 6
5 6 20 20 0
6 7 19 17 -2
7 8 24 23 -1
Мы также можем рассчитать абсолютную разницу в продажах, используя функцию pandas.Series.abs() :
#add new column to represent absolute difference between B sales and A sales
df['diff'] = pd.Series.abs(df['B_sales'] - df['A_sales'])
#view DataFrame
df
period A_sales B_sales diff
0 1 12 14 2
1 2 14 19 5
2 3 15 20 5
3 4 13 22 9
4 5 18 24 6
5 6 20 20 0
6 7 19 17 2
7 8 24 23 1
Пример 2: найти разницу между столбцами на основе условия
Мы также можем отфильтровать DataFrame, чтобы отображались только строки, в которых разница между столбцами меньше или больше некоторого значения.
Например, следующий код возвращает только те строки, в которых продажи в регионе A больше , чем продажи в регионе B:
#add new column to represent difference between B sales and A sales
df['diff'] = df['B_sales'] - df['A_sales']
#display rows where sales in region A is greater than sales in region B
df[df['diff']< 0 ]
period A_sales B_sales diff
6 7 19 17 -2
7 8 24 23 -1
Дополнительные ресурсы
Pandas: как найти разницу между двумя строками
Pandas: как группировать и агрегировать по нескольким столбцам