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

问题描述:

我有一些关于各个人的性别的数据集。说,数据集看起来像这样:根据另一列的值在熊猫中创建新列

Male 
Female 
Male and Female 
Male 
Male 
Female 
Trans 
Unknown 
Male and Female 

一些自认为男性,一些女性和一些自认为男性和女性。现在

,我想要做的就是建立在熊猫新列将映射

Males to 1, 
Females to 2, 
Others to 3 

我写了一些代码

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) 

但我得到的是函数不包含任何错误属性包含。我试图消除STR:

x.contains("Male") 

和我得到同样的错误

有没有更好的方式来做到这一点?

您可以使用:

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 
+0

感谢。这一个伎俩 – Piyush

创建一个映射函数,并用它来映射这些值。

def map_identity(identity): 
    if gender.lower() == 'male': 
     return 1 
    elif gender.lower() == 'female': 
     return 2 
    else: 
     return 3 

df["B"] = df["A"].map(map_identity)