Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create new column in pandas based on value of another column

Tags:

python

pandas

I have some dataset about genders of various individuals. Say, the dataset looks like this:

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

Some identify themselves as Male, some female and some identify themselves as both male and female.

Now, what I want to do is create a new column in Pandas which maps

Males to 1, 
Females to 2,
Others to 3

I wrote some code

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)

But I was getting errors that function doesn't contain any attribute contains. I tried removing str:

x.contains("Male")

and I was getting same error

Is there a better way to do this?

like image 211
Piyush Avatar asked Dec 22 '25 01:12

Piyush


1 Answers

You can use:

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
like image 62
jezrael Avatar answered Dec 23 '25 13:12

jezrael