Кирпичи данных Назначение столбца Коалы на основе другого значения лямбда-функции - PullRequest
1 голос
/ 10 октября 2019

Дано рамке данных в коалах:

df = ks.DataFrame({"high_risk": [0, 1, 0, 1, 1], 
                   "medium_risk": [1, 0, 0, 0, 0]
                   })

Запуск лямбда-функции для получения нового столбца на основе существующих значений столбца:

df = df.assign(risk=lambda x: "High" if x.high_risk else ("Medium" if x.medium_risk else "Low"))
df
Out[72]: 
   high_risk  medium_risk  risk
0          0            1  High
4          1            0  High
1          1            0  High
2          0            0  High
3          1            0  High

Ожидаемый доход:

       high_risk  medium_risk  risk
    0          0            1  Medium
    4          1            0  High
    1          1            0  High
    2          0            0  Low
    3          1            0  High

Почему это присваивает «High» каждому из значений. Намерение состоит в том, чтобы выполнять операции над каждой строкой, рассматривает ли он весь столбец в сравнении?

1 Ответ

0 голосов
/ 11 октября 2019

Использование assign на koalas df кажется мне непростым, но для вашего случая я бы mul столбец 'high_risk' на 2, затем add столбец 'medium_risk' и, наконец, map результатзаменить 2 на «высокий» (поскольку вы умножаете столбец на 2 раньше), 1 на «средний», а 0 на «низкий», например:

df = df.assign(risk= df.high_risk.mul(2).add(df.medium_risk)
                       .map({0:'low', 1:'medium', 2:'high'}))
df
   high_risk  medium_risk    risk
0          0            1  medium
1          1            0    high
2          0            0     low
3          1            0    high
4          1            0    high

Примечание: это не удастся, если у вас есть 1в столбце высокого и среднего риска.

...