Search code examples
pythonpandaslowercasekaggle

pandas srt.lower() not working on dataframe column


I'm working with the Titanic dataset available from Kaggle. I have it in a dataframe and i want to change the case of the "sex" column to lowercase. I'm using the following code

import pandas as pd

df = pd.read_csv('titanic.csv')
print dfFull['sex'].unique()
df.sex.str.lower()

#check if it worked
print df['sex'].unique()

and also trying

df['sex'].str.lower()

but when I run df['sex'].unique() I get three unique values [male, female, Female].

Why does my code not lower the case of the strings and save it back to the dataframe so i get [male, female] of from the .unique method?


Solution

  • str.lower() does not modify the existing column. It just returns a new Series with the lowercase transform applied. If you want to overwrite the original column, you need to assign the result back to it:

    df['sex'] = df.sex.str.lower()