簡體   English   中英

根據另一列的值在熊貓中創建新列

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM