2016-09-19 9 views
1

私は様々な人の性別についていくつかのデータセットを持っています。たとえば、データセットは次のようになります。別の列の値に基づいてパンダに新しい列を作成する

Male 
Female 
Male and Female 
Male 
Male 
Female 
Trans 
Unknown 
Male and Female 

一部の人は男性として、一部の女性は男性と女性の両方として識別します。

さて、私がやりたいことは、私はいくつかのコード

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) 

を書いたしかし、私は関数が含まれていないエラーを得ていた

Males to 1, 
Females to 2, 
Others to 3 

マッピングしたパンダの新しい列を作成することです属性には私は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) 
関連する問題