Изменение значений столбца на 1 или 0 на основе параметра в пандах - PullRequest
0 голосов
/ 04 октября 2018

Итак, у меня есть этот фрейм данных, который содержит много столбцов, и, например, посмотрите на это:

id   Status   Name   Age   Job
213  Active   John   39    Unavailable
415  Inactive Sara   34    Unavailable
941  Inactive Micky  11    Unavailable
993  Active   Zack   45    Unavailable

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

id   Status   Name   Age   Job
213  Active   John   39    1
415  Inactive Sara   34    0
941  Inactive Micky  11    0
993  Active   Zack   45    1

И для изменения значений столбца состояния на 1 и 0, если статусактивен или неактивен соответственно.

id   Status   Name   Age   Job
213    1      John   39    Unavailable
415    0      Sara   34    Unavailable
941    0      Micky  11    Unavailable
993    1      Zack   45    Unavailable

Я много читал в их документации, но на самом деле они явно не объявляли такие манипуляции.Также я хочу, чтобы они были сделаны отдельно.

Ответы [ 3 ]

0 голосов
/ 04 октября 2018

Использование eq:

df.assign(Job=df.Status.eq('Active').astype(int))

    id    Status   Name  Age  Job
0  213    Active   John   39    1
1  415  Inactive   Sara   34    0
2  941  Inactive  Micky   11    0
3  993    Active   Zack   45    1
0 голосов
/ 04 октября 2018

Вы также можете использовать pd.get_dummies, так как вы активны или неактивны.Может быть немного быстрее на большем DataFrames.

import pandas as pd
df['Job'] = pd.get_dummies(df.Status)['Active']
#    id    Status   Name  Age  Job
#0  213    Active   John   39    1
#1  415  Inactive   Sara   34    0
#2  941  Inactive  Micky   11    0
#3  993    Active   Zack   45    1
0 голосов
/ 04 октября 2018

Есть много способов сделать это.Мне нравится map:

df['Job'] = df.Status.map({'Active':1, 'Inactive':0})
>>> df
    id    Status   Name  Age  Job
0  213    Active   John   39    1
1  415  Inactive   Sara   34    0
2  941  Inactive  Micky   11    0
3  993    Active   Zack   45    1

Поскольку у вас есть только 2 варианта (Active или Inactive), вы также можете использовать np.where:

df['Job'] = pd.np.where(df.Status == 'Active', 1, 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...