Use the .str accessor for vectorised string operations: clean, extract, split, and match patterns.
String Operations
import pandas as pd
df = pd.DataFrame({'name': ['alice smith', 'BOB JONES', ' carol ']})
# All pandas string methods via .str accessor
df['name'].str.lower()
df['name'].str.upper()
df['name'].str.title()
df['name'].str.strip()
df['name'].str.len()
df['name'].str.contains('ali', case=False)
df['name'].str.startswith('alice')
df['name'].str.endswith('es')
df['name'].str.replace('alice', 'ALICE')
df['name'].str.split(' ')
df['name'].str.split(' ', expand=True) # to columns
# Extract with regex
df['email'].str.extract(r'([a-z]+)@(.+)', expand=True)
df['name'].str.findall(r'[A-Z][a-z]+')
# Count and get part
df['name'].str.count('o')
df['name'].str.get(0) # first character