Pandas: создайте новый столбец, используя несколько условий if else


Вы можете использовать следующий синтаксис для создания нового столбца в DataFrame pandas, используя несколько условий if else:

 #define conditions
conditions = [
    (df[' column1 '] == ' A ') & (df[' column2 '] < 20 ),
    (df[' column1 '] == ' A ') & (df[' column2 '] >= 20 ),
    (df[' column1 '] == ' B ') & (df[' column2 '] < 20 ),
    (df[' column1 '] == ' B ') & (df[' column2 '] >= 20 )
]

#define results
results = [' result1 ', ' result2 ', ' result3 ', ' result4 ']

#create new column based on conditions in column1 and column2
df[' new_column '] = np. select (conditions, results)

В этом конкретном примере создается столбец с именем new_column , значения которого основаны на значениях столбца1 и столбца2 в DataFrame.

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

Пример: создание нового столбца с использованием нескольких условий if Else в Pandas

Предположим, у нас есть следующий DataFrame pandas, содержащий информацию о различных баскетболистах:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' points ': [15, 18, 22, 24, 12, 17, 20, 28]})

#view DataFrame
print (df)

  team points
0 to 15
1 to 18
2 to 22
3 to 24
4 B 12
5 B 17
6 B 20
7 B 28

Теперь предположим, что мы хотим создать новый столбец с именем class , который классифицирует каждого игрока в одну из следующих четырех групп:

  • Плохо_А , если команда А и количество очков < 20.
  • Хорошо_А, если команда А и очки ≥ 20
  • Bad_B, если команда B и количество очков < 20.
  • Хорошо_B , если команда B и набрала очки ≥ 20.

Для этого мы можем использовать следующий синтаксис:

 import numpy as np

#define conditions
conditions = [
    (df[' team '] == ' A ') & (df[' points '] < 20 ),
    (df[' team '] == ' A ') & (df[' points '] >= 20 ),
    (df[' team '] == ' B ') & (df[' points '] < 20 ),
    (df[' team '] == ' B ') & (df[' points '] >= 20 )
]

#define results
results = [' Bad_A ', ' Good_A ', ' Bad_B ', ' Good_B ']

#create new column based on conditions in column1 and column2
df[' class '] = np. select (conditions, results)

#view updated DataFrame
print (df)

  team points class
0 A 15 Bad_A
1 A 18 Bad_A
2 A 22 Good_A
3 A 24 Good_A
4 B 12 Bad_B
5 B 17 Bad_B
6 B 20 Good_B
7 B 28 Good_B

Новый столбец под названием «класс» отображает рейтинг каждого игрока на основе значений в столбцах «команда » и «очки» .

Примечание . Полную документацию по функции NumPy select() можно найти здесь .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в pandas:

Pandas: как создать логический столбец на основе условия
Pandas: Как посчитать значения в столбце с условием
Pandas: как использовать Groupby и считать по условию

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *