Assigning Category specific values as observations in a new column

Viewed 29

I'm assigning value "x" to all observations in column 'Superkingdom_name' when category Unknown1 is selected in Class column.

df.loc[df['class'] == "Unknown1", 'Superkingdom_name'] = "x"

Similarly for assigning value Y to Unknown2, I do it like this

df.loc[df['class'] == "Unknown2", 'Superkingdom_name'] = "y"

Question: Can we do this for multiple categories . But not manually. Can we loop it ? Instead of doing for each category as below :

df.loc[df['class'] == "Unknown1", 'Superkingdom_name'] = "x"
df.loc[df['class'] == "Unknown2", 'Superkingdom_name'] = "y"
df.loc[df['class'] == "Unknown2", 'Superkingdom_name'] = "z"

I could make a list of categories in "Class" column and make it an iterable like

df["class"].unique().tolist()

---> ["Unknown1","Unknown2","Unknown3"]

But I do not get how to assign values to the "Superkingdom_name" in a for loop.

1 Answers

Try using replace().

df['Superkingdom_name']= df['class'].replace(['Unknown1','Unknown2','Unknown3'],['x','y','z'])
Related