因此,我有一个包含很多列的数据框,以示例为例:
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库将一个人的状态为活动的值分配给job列,如果不活动的状态为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
我在他们的文档中读了很多东西,但是他们并没有真正明确声明这种操作。我也想分开制作。
答案 0 :(得分:4)
使用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
答案 1 :(得分:3)
有很多方法可以做到这一点。我喜欢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)
答案 2 :(得分:3)
由于您处于活动状态或非活动状态,因此您也可以使用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