📖 Scenario: You work in a company that collects customer feedback. Some feedback entries contain typos or inconsistent words that need correction before analysis.
🎯 Goal: You will create a pandas DataFrame with customer feedback, set up a word to replace, use str.replace() to fix the feedback, and print the corrected feedback.
📋 What You'll Learn
Create a pandas DataFrame with a column named feedback containing exact text entries.
Create a variable old_word with the exact word to replace.
Use str.replace() on the feedback column to replace old_word with a new word.
Print the updated feedback column.
💡 Why This Matters
🌍 Real World
Cleaning and correcting text data is common in customer feedback analysis, social media monitoring, and survey data preparation.
💼 Career
Data scientists and analysts often need to preprocess text data by fixing typos or standardizing terms before running analysis or machine learning.
Progress0 / 4 steps
1
Create the customer feedback DataFrame
Import pandas as pd and create a DataFrame called df with one column named feedback containing these exact entries: 'The product is gud', 'Service was excelent', 'Delivery was fast'.
Pandas
Hint
Use pd.DataFrame() with a dictionary where the key is 'feedback' and the value is a list of the exact strings.
2
Set the word to replace
Create a variable called old_word and set it to the exact string 'gud'.
Pandas
Hint
Just assign the string 'gud' to the variable old_word.
3
Replace the old word with the correct word
Use str.replace() on the feedback column of df to replace old_word with 'good'. Save the result back to the feedback column.
Pandas
Hint
Use df['feedback'].str.replace(old_word, 'good') and assign it back to df['feedback'].
4
Print the updated feedback column
Print the feedback column of df to see the corrected feedback.
Pandas
Hint
Use print(df['feedback']) to display the updated column.
Practice
(1/5)
1. What does the pandas str.replace() method do when applied to a DataFrame column?
easy
A. It sorts the column values in ascending order.
B. It deletes the entire column from the DataFrame.
C. It converts all strings in the column to uppercase.
D. It replaces specified substrings in each string of the column with a new substring.
Solution
Step 1: Understand the purpose of str.replace()
This method targets each string in a pandas column and looks for a substring to 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 D
Quick Check:
str.replace() = substring substitution [OK]
Hint: Think: change parts of text in each cell [OK]
Common Mistakes:
Confusing replace with deleting columns
Thinking it changes case of strings
Assuming it sorts data
2. Which of the following is the correct syntax to replace all occurrences of 'cat' with 'dog' in a pandas column named pets?
easy
A. df['pets'].str.replace('cat', 'dog')
B. df['pets'].replace('cat', 'dog')
C. df.str.replace('cat', 'dog')['pets']
D. df['pets'].replace_all('cat', 'dog')
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 str.replace() on a column
The correct syntax is df['column'].str.replace(old, new). df['pets'].str.replace('cat', 'dog') matches this.
Final Answer:
df['pets'].str.replace('cat', 'dog') -> Option A
Quick Check:
Use .str.replace() on Series for string substitution [OK]
Hint: Use .str.replace() on the column, not .replace() alone [OK]
Common Mistakes:
Using .replace() directly on the DataFrame column
Trying to call .str.replace() on the whole DataFrame
Step 1: Understand what str.replace('apple', 'orange') does
It replaces every occurrence of 'apple' in each string with 'orange'.
Step 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 C
Quick Check:
Substring 'apple' replaced wherever found [OK]
Hint: Replace changes substrings inside words too [OK]
Common Mistakes:
Assuming only exact matches replaced, not substrings
Thinking 'pineapple' stays unchanged
Confusing replacement with full string swap
4. What is wrong with this code snippet?
df['col'].str.replace('a', 'b')
It does not change df['col'] as expected.
medium
A. The result is not assigned back to df['col'] to save changes.
B. The method str.replace() does not exist in pandas.
C. The arguments 'a' and 'b' must be integers, not strings.
D. You must use df.replace() instead of str.replace().
Solution
Step 1: Understand that str.replace() returns a new Series
The method does not change the original column in place; it returns a modified copy.
Step 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 to df['col'] to save changes. -> Option A
Quick Check:
Assign result to keep changes [OK]
Hint: Always assign back to save string replacements [OK]
Common Mistakes:
Expecting in-place change without assignment
Confusing str.replace() with DataFrame.replace()
Thinking str.replace() modifies original data silently
5. You have a DataFrame with a column emails containing email addresses. You want to anonymize the domain part by replacing everything after '@' with 'example.com'. Which code correctly does this?
hard
A. df['emails'].replace(r'@.*', '@example.com')
B. df['emails'].str.replace(r'@.*', '@example.com', regex=True)
C. df['emails'].str.replace('example.com', '@')
D. df['emails'].str.replace('@', '@example.com')
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 str.replace() with regex=True to replace domain
df['emails'].str.replace(r'@.*', '@example.com', regex=True) uses regex to replace everything after '@' with '@example.com'.
Step 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 B
Quick Check:
Use regex in str.replace() for domain substitution [OK]
Hint: Use regex '@.*' with regex=True to replace domain [OK]
Common Mistakes:
Not using regex=True for pattern matching
Replacing only '@' without domain
Using DataFrame.replace instead of str.replace
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.