我想将“ 性别”列中的所有“ 男性”替换为 1 ,并将所有“ 女性< / strong>”设置为 0 。
这是我的数据框 df :
Pclass Sex Age SibSp Parch
0 3 male 22.0 1 0
1 1 female 38.0 1 0
2 3 female 26.0 0 0
3 1 female 35.0 1 0
4 3 male 35.0 0 0
5 3 male 2.0 3 1
6 3 female 27.0 0 2
7 2 female 14.0 1 0
8 3 female 4.0 1 1
9 1 female 58.0 0 0
我使用了pd.get_dummies
:
pd.get_dummies(df.Sex)
但是它会创建两列男性和女性,如下所示:
female male
0 0 1
1 1 0
2 1 0
3 1 0
4 0 1
另一方面,我只希望有一列性别表示男性 1 和女性 0 。
我知道我可以使用for循环遍历所有行并进行更改,但是有一种可恶的方法吗?
答案 0 :(得分:3)
尝试以下代码:
df["Sex"].replace({"male": 1, "female": 0}, inplace=True)
答案 1 :(得分:1)
与==
比较,然后将boolean
类型的结果转换为int
类型。
df['Sex_'] = (df.Sex == 'male').astype(int)
或者如果您想使用当前代码pd.get_dummies
,则只需删除一列
df['Sex_'] = pd.get_dummies(df.Sex, drop_first = True)
答案 2 :(得分:0)
如果您需要map
个标签,请尝试:
dicts = {"male":1,"female":0}
df['Sex'].map(dicts)
答案 3 :(得分:0)
请确保“性别”列仅包含“男性”和“女性”值
df['Sex'].value_counts()
如果是这样的话
df['Sex'] = df['Sex'].apply(lambda x:1 if x == 'male' else 0)