当前位置: 代码迷 >> python >> 根据pandas中的参数将列的值更改为1或0
  详细解决方案

根据pandas中的参数将列的值更改为1或0

热度:89   发布时间:2023-07-16 10:18:40.0

所以我有这个包含很多列的数据框,例如看看这个:

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

我想要做的是使用pandas库为作业列分配值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

如果status分别处于活动或非活动状态,则将status列的值更改为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

我在他们的文档中读了很多,但他们并没有真正明确地声明这样的操作。 我也希望将这些单独制作。

使用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

有很多方法可以做到这一点。 我喜欢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)

您也可以使用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
  相关解决方案