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


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

 df[' boolean_column '] = np. where (df[' some_column '] > 15, True , False )

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

  • Истинно , если значение в some_column больше 15.
  • False , если значение в some_column меньше или равно 15.

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

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

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

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' points ': [5, 17, 7, 19, 12, 13, 9, 24]})

#view DataFrame
print (df)

  team points
0 to 5
1 to 17
2 to 7
3 to 19
4 B 12
5 B 13
6 B 9
7 B 24   

Мы можем использовать следующий код для создания нового столбца с именем Good_player , который возвращает True , если значение в столбце Points больше 15, или False в противном случае:

 import numpy as np

#create new boolean column based on value in points column
df[' good_player '] = np. where (df[' points '] > 15, True , False )

#view updated DataFrame
print (df)

  team points good_player
0 To 5 False
1 To 17 True
2 To 7 False
3 To 19 True
4 B 12 False
5 B 13 False
6 B 9 False
7 B 24 True

Обратите внимание, что новый столбец Good_player содержит только два значения: True или False .

Мы можем использовать функцию dtypes() , чтобы убедиться, что новый столбец Good_player действительно является логическим столбцом:

 #display data type of good_player column
df[' good_player ']. dtype

dtype('bool')

Новый столбец Good_player действительно является логическим столбцом.

Также обратите внимание, что вы можете возвращать числовые значения, такие как 1 и 0 , вместо True и False , если хотите:

 import numpy as np

#create new boolean column based on value in points column
df[' good_player '] = np. where (df[' points '] > 15, 1 , 0 )

#view updated DataFrame
print (df)

  team points good_player
0 to 5 0
1 To 17 1
2 to 7 0
3 A 19 1
4 B 12 0
5 B 13 0
6 B 9 0
7 B 24 1

Столбец Good_player теперь содержит 1 , если соответствующее значение в столбце очков больше 15.

В противном случае он содержит значение 0 .

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

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

Как выбрать строки на основе нескольких условий в Pandas
Как создать новый столбец на основе условия в Pandas
Как фильтровать DataFrame Pandas по нескольким условиям

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

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