Reputation: 924
How do you capitalize the first letter of each word in a pandas dataframe column? For example, I am trying to make the following transformation.
Column1 Column1
The apple The Apple
the Pear ⟶ The Pear
Green tea Green Tea
Upvotes: 40
Views: 47915
Reputation: 23031
As pandas string methods are not optimized, mapping the equivalent Python string methods is often faster than pandas' .str
methods. So for example, to capitalize the first letter of each word, the following may be used.
df['Column1'] = df['Column1'].map(str.title)
Column1 Column1
The apple The Apple
the Pear ⟶ The Pear
Green TEA Green Tea
On the other hand, if you want to capitalize only the first character in each string, then calling upper()
only on the first character works.
df['Column1'] = df['Column1'].str[:1].str.upper() + df['Column1'].str[1:]
# or
df['Column1'] = df['Column1'].map(lambda x: x[:1].upper() + x[1:])
Column1 Column1
The apple The apple
the Pear ⟶ The Pear
Green TEA Green TEA
Upvotes: 0
Reputation: 862471
You can use str.title
:
df.Column1 = df.Column1.str.title()
print(df.Column1)
0 The Apple
1 The Pear
2 Green Tea
Name: Column1, dtype: object
Another very similar method is str.capitalize
, but it uppercases only first letters:
df.Column1 = df.Column1.str.capitalize()
print(df.Column1)
0 The apple
1 The pear
2 Green tea
Name: Column1, dtype: object
Upvotes: 85