根据另一列的值在熊猫中创建新列
问题描述:
我有一些关于各个人的性别的数据集。说,数据集看起来像这样:根据另一列的值在熊猫中创建新列
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
答
创建一个映射函数,并用它来映射这些值。
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)
感谢。这一个伎俩 – Piyush