Создайте тройной двойной столбец в Пандах со статистикой НБА - PullRequest
0 голосов
/ 26 января 2019

У меня возникла проблема с созданием очень специфического типа логического столбца в пандах.Я работаю с данными NBA и хочу создать столбец для случая, когда игрок получает тройной дубль.Этот код работает:

james_harden['trip_dub'] = (james_harden['points'] >= 10) & (james_harden['rebounds' >= 10) & (james_harden['assists'] >= 10)

james_harden['trip_dub'] = james_harden['trip_dub'].map(lambda x: 1 if x == True else 0)

Однако тройной дубль может быть достигнут с помощью очков, подборов и передач ... очков, подборов и блоков ... подборов, блоков и передач ... и т. Д.

Мне интересно, можно ли написать код, чтобы проверить, больше или равно ли любое сочетание трех столбцов из пяти больше или равно 10 ...

Так что, если у меня есть столбцыа, б, в, д, е как мне проверить, если (a >= 10 and b>= 10 and c>=10) OR (a >= 10 and d>=10 and e >= 10)?

1 Ответ

0 голосов
/ 26 января 2019

Предполагая, что у вас есть 5 статистических данных, а тройной дубль определен как минимум 10 баллов как минимум в 3 статистических данных, вы можете использовать pd.DataFrame.sum вдоль axis=1:

stats = ['points', 'rebounds', 'assists', 'blocks', 'steals']
james_harden['trip_dub'] = (james_harden[stats] >= 10).sum(1) >= 3

Идея состоит в том, что james_harden[stats] >= 10 представляет логический фрейм данных, и вызов sum для него вдоль столбцов суммирует количество True значений в каждой строке .Затем нам нужно только проверить, что числа в каждой строке больше или равны 3.

...