Как создать новый столбец на основе условия в Pandas


Часто вам может понадобиться создать новый столбец в кадре данных pandas на основе некоторого условия.

В этом руководстве представлено несколько примеров того, как это сделать с помощью следующего DataFrame:

import pandas as pd
import numpy as np

#create DataFrame
df = pd.DataFrame({'rating': [90, 85, 82, 88, 94, 90, 76, 75, 87, 86],
 'points': [25, 20, 14, 16, 27, 20, 12, 15, 14, 19],
 'assists': [5, 7, 7, 8, 5, 7, 6, 9, 9, 5],
 'rebounds': [11, 8, 10, 6, 6, 9, 6, 10, 10, 7]})

#view DataFrame
df

 rating points assists rebounds
0 90 25 5 11
1 85 20 7 8
2 82 14 7 10
3 88 16 8 6
4 94 27 5 6
5 90 20 7 9
6 76 12 6 6
7 75 15 9 10
8 87 14 9 10
9 86 19 5 7

Пример 1. Создание нового столбца с двоичными значениями

В следующем коде показано, как создать новый столбец с именем «Хорошо», где значение «да», если количество баллов в данной строке превышает 20, и «нет», если нет:

#create new column titled 'Good'
df['Good'] = np.where(df['points']>20, 'yes', 'no')

#view DataFrame 
df

 rating points assists rebounds Good
0 90 25 5 11 yes
1 85 20 7 8 no
2 82 14 7 10 no
3 88 16 8 6 no
4 94 27 5 6 yes
5 90 20 7 9 no
6 76 12 6 6 no
7 75 15 9 10 no
8 87 14 9 10 no
9 86 19 5 7 no

Пример 2. Создание нового столбца с несколькими значениями

В следующем коде показано, как создать новый столбец с именем «Хорошо», где значение равно:

  • «Да», если количество баллов ≥ 25
  • «Возможно», если 15 ≤ баллов < 25
  • «Нет», если баллы < 15
#define function for classifying players based on points
def f(row):
 if row['points'] < 15:
 val = 'no'
 elif row['points'] < 25:
 val = 'maybe'
 else :
 val = 'yes'
 return val

#create new column 'Good' using the function above
df['Good'] = df.apply (f, axis=1)

#view DataFrame 
df

 rating points assists rebounds Good
0 90 25 5 11 yes
1 85 20 7 8 maybe
2 82 14 7 10 no
3 88 16 8 6 maybe
4 94 27 5 6 yes
5 90 20 7 9 maybe
6 76 12 6 6 no
7 75 15 9 10 maybe
8 87 14 9 10 no
9 86 19 5 7 maybe

Пример 3. Создание нового столбца на основе сравнения с существующим столбцом

В следующем коде показано, как создать новый столбец с именем «assist_more», где значение равно:

  • «Да», если передачи > подборов.
  • «Нет» иначе.
#create new column titled 'assist_more'
df['assist_more'] = np.where(df['assists']>df['rebounds'], 'yes', 'no')

#view DataFrame 
df

 rating points assists rebounds assist_more
0 90 25 5 11 no
1 85 20 7 8 no
2 82 14 7 10 no
3 88 16 8 6 yes
4 94 27 5 6 no
5 90 20 7 9 no
6 76 12 6 6 no
7 75 15 9 10 no
8 87 14 9 10 no
9 86 19 5 7 no

Вы можете найти больше руководств по Python здесь .

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