2016-09-19 130 views
1

我有一些關於各個人的性別的數據集。說,數據集看起來像這樣:根據另一列的值在熊貓中創建新列

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") 

和我得到同樣的錯誤

有沒有更好的方式來做到這一點?

回答

3

您可以使用:

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

0

創建一個映射函數,並用它來映射這些值。

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) 
相關問題