替换数据框列中的特定条目

时间:2020-05-22 07:11:53

标签: python pandas

我想将“ 性别”列中的所有“ 男性”替换为 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循环遍历所有行并进行更改,但是有一种可恶的方法吗?

4 个答案:

答案 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)