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 и считать по условию