[英]Create new column in pandas based on value of another column
我有一些关于不同个体性别的数据集。 假设数据集如下所示:
Male
Female
Male and Female
Male
Male
Female
Trans
Unknown
Male and Female
有的自称为男性,有的自称为女性,有的自称为男性和女性。
现在,我想要做的是在 Pandas 中创建一个新列,它映射
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)
如果没有具体要求按顺序分别使用 1、2、3 到男性、女性和其他,您可以尝试使用 Scikit-Learn 的 LabelEncoder。 它将随机为该列中的每个唯一类别分配一个唯一编号。
from sklearn import preprocessing
encoder = preprocessing.LabelEncoder()
encoder.fit(df["gender"])
有关详细信息,您可以查看标签编码器文档。
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.