[英]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.