在pandas中根据另一列的值创建新列

Piy*_*ush 1 python pandas

我有一些关于不同个体性别的数据集.比如说,数据集看起来像这样:

Male
Female
Male and Female
Male
Male
Female
Trans
Unknown
Male and Female
Run Code Online (Sandbox Code Playgroud)

有些人认为自己是男性,有些是女性,有些人认为自己是男性和女性.

现在,我想要做的是在Pandas中创建一个映射的新列

Males to 1, 
Females to 2,
Others to 3
Run Code Online (Sandbox Code Playgroud)

我写了一些代码

def gender(x):
    if x.str.contains("Male")
        return 1
    elif x.str.contains("Female")
        return 2
    elif return 3

df["Gender Values"] = df["Gender"].apply(gender)
Run Code Online (Sandbox Code Playgroud)

但我得到的错误是函数不包含任何属性.我尝试删除str:

x.contains("Male")
Run Code Online (Sandbox Code Playgroud)

我得到了同样的错误

有一个更好的方法吗?

jez*_*ael 7

您可以使用:

def gender(x):
    if "Female" in x and "Male" in x:
        return 3
    elif "Male" in x:
        return 1
    elif "Female" in x:
        return 2
    else: return 4

df["Gender Values"] = df["Gender"].apply(gender)

print (df)
            Gender  Gender Values
0             Male              1
1           Female              2
2  Male and Female              3
3             Male              1
4             Male              1
5           Female              2
6            Trans              4
7          Unknown              4
8  Male and Female              3
Run Code Online (Sandbox Code Playgroud)

  • 从谷歌找到这个,这是我能找到的最好的解决方案!谢谢! (2认同)