We use str.replace() to change parts of text in data. It helps fix or update words or characters easily.
str.replace() for substitution in Pandas
Series.str.replace(pat, repl, n=-1, case=None, regex=True)
pat is the pattern or text you want to replace.
repl is the new text you want to put instead.
df['Name'].str.replace('John', 'Jonathan')
df['Date'].str.replace('/', '-')
df['Code'].str.replace(' ', '')
df['Text'].str.replace('a', 'A', n=1)
This program creates a table with names, dates, and codes. It then fixes the names by changing 'John' to 'Jonathan', changes date slashes to dashes, and removes spaces from codes.
import pandas as pd # Create a sample DataFrame sample_data = {'Name': ['John Doe', 'Jane Smith', 'Johnny Appleseed', 'Johnathan Davis'], 'Date': ['2023/01/01', '2023/02/15', '2023/03/20', '2023/04/25'], 'Code': ['A 123', 'B 456', 'C 789', 'D 012']} df = pd.DataFrame(sample_data) print('Original DataFrame:') print(df) # Replace 'John' with 'Jonathan' in 'Name' df['Name'] = df['Name'].str.replace('John', 'Jonathan') # Replace '/' with '-' in 'Date' df['Date'] = df['Date'].str.replace('/', '-') # Remove spaces in 'Code' df['Code'] = df['Code'].str.replace(' ', '') print('\nDataFrame after str.replace() operations:') print(df)
Time complexity: Usually O(n) where n is the number of strings, because it checks each string once.
Space complexity: O(n) for the new strings created after replacement.
Common mistake: Forgetting that str.replace() returns a new Series and does not change the original unless assigned back.
Use str.replace() when you want to change text inside strings. For removing rows or columns, use other methods.
str.replace() helps change parts of text in pandas columns easily.
It works on each string in a column and returns a new column with changes.
Remember to assign the result back to keep the changes.
Practice
str.replace() method do when applied to a DataFrame column?Solution
Step 1: Understand the purpose of
This method targets each string in a pandas column and looks for a substring to replace.str.replace()Step 2: Identify the effect on the column
It creates a new column or series where the specified substring is replaced by the new substring in every string.Final Answer:
It replaces specified substrings in each string of the column with a new substring. -> Option DQuick Check:
str.replace() = substring substitution [OK]
- Confusing replace with deleting columns
- Thinking it changes case of strings
- Assuming it sorts data
pets?Solution
Step 1: Identify the correct method for string replacement
In pandas,str.replace()is used on a Series of strings to replace substrings.Step 2: Check the syntax for applying
The correct syntax isstr.replace()on a columndf['column'].str.replace(old, new). df['pets'].str.replace('cat', 'dog') matches this.Final Answer:
df['pets'].str.replace('cat', 'dog') -> Option AQuick Check:
Use .str.replace() on Series for string substitution [OK]
- Using .replace() directly on the DataFrame column
- Trying to call .str.replace() on the whole DataFrame
- Using non-existent methods like replace_all
import pandas as pd
df = pd.DataFrame({'fruit': ['apple', 'banana', 'grape', 'pineapple']})
df['fruit_new'] = df['fruit'].str.replace('apple', 'orange')What is the content of
df['fruit_new']?Solution
Step 1: Understand what
It replaces every occurrence of 'apple' in each string with 'orange'.str.replace('apple', 'orange')doesStep 2: Apply replacement to each value
'apple' becomes 'orange', 'banana' unchanged, 'grape' unchanged, 'pineapple' contains 'apple' at the end, so it becomes 'pineorange'.Final Answer:
['orange', 'banana', 'grape', 'pineorange'] -> Option CQuick Check:
Substring 'apple' replaced wherever found [OK]
- Assuming only exact matches replaced, not substrings
- Thinking 'pineapple' stays unchanged
- Confusing replacement with full string swap
df['col'].str.replace('a', 'b')It does not change
df['col'] as expected.Solution
Step 1: Understand that
The method does not change the original column in place; it returns a modified copy.str.replace()returns a new SeriesStep 2: Identify the missing assignment
To keep changes, assign the result back:df['col'] = df['col'].str.replace('a', 'b').Final Answer:
The result is not assigned back todf['col']to save changes. -> Option AQuick Check:
Assign result to keep changes [OK]
- Expecting in-place change without assignment
- Confusing str.replace() with DataFrame.replace()
- Thinking str.replace() modifies original data silently
emails containing email addresses. You want to anonymize the domain part by replacing everything after '@' with 'example.com'. Which code correctly does this?Solution
Step 1: Identify the pattern to replace
The domain part starts with '@' and continues to the end, so the regex '@.*' matches it.Step 2: Use
df['emails'].str.replace(r'@.*', '@example.com', regex=True) uses regex to replace everything after '@' with '@example.com'.str.replace()with regex=True to replace domainStep 3: Check other options
A uses Series.replace() which defaults to regex=False, treating '@.*' literally. B replaces only '@' leaving the domain. C replaces in the wrong direction.Final Answer:
df['emails'].str.replace(r'@.*', '@example.com', regex=True) -> Option BQuick Check:
Use regex in str.replace() for domain substitution [OK]
- Not using regex=True for pattern matching
- Replacing only '@' without domain
- Using DataFrame.replace instead of str.replace
Ready to prove it?
Pass the test and this pattern moves unknown
