Pandas: как найти разницу между двумя столбцами


Чтобы найти разницу между любыми двумя столбцами в кадре данных 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: как группировать и агрегировать по нескольким столбцам

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.