case_when функция от R до Python - PullRequest
       11

case_when функция от R до Python

0 голосов
/ 12 февраля 2019

Как я могу реализовать case_when функцию R в коде Python?

Вот случай case_when функции R:

https://www.rdocumentation.org/packages/dplyr/versions/0.7.8/topics/case_when

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

import pandas as pd
import numpy as np

data = {'name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'], 
        'age': [42, 52, 36, 24, 73], 
        'preTestScore': [4, 24, 31, 2, 3],
        'postTestScore': [25, 94, 57, 62, 70]}
df = pd.DataFrame(data, columns = ['name', 'age', 'preTestScore', 'postTestScore'])
df

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

if age < 10 then baby
 if age >= 10 and age < 20 then kid 
if age >=20 and age < 30 then young 
if age >= 30 and age < 50 then mature 
if age >= 50 then grandpa 

Может ли кто-нибудь помочь в этом?

1 Ответ

0 голосов
/ 12 февраля 2019

Вы хотите использовать np.select:

conditions = [(df['age'].lt(10)), 
              (df['age'].ge(10) & df['age'].lt(20)), 
              (df['age'].ge(20) & df['age'].lt(30)), 
              (df['age'].ge(30) & df['age'].lt(50)), 
              (df['age'].ge(50))]
choices = ['baby', 'kid', 'young', 'mature', 'grandpa']

df['elderly'] = np.select(conditions, choices)

df
    name  age  preTestScore  postTestScore  elderly
0  Jason   42             4             25   mature
1  Molly   52            24             94  grandpa
2   Tina   36            31             57   mature
3   Jake   24             2             62    young
4    Amy   73             3             70  grandpa

Списки conditions и choices должны быть одинаковой длины.

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