📖 Scenario: You work in a store and have a list of product codes mixed with letters and numbers. You want to pull out just the numbers from each code to analyze sales data.
🎯 Goal: Build a small program that extracts the numeric part from each product code using str.extract with a regular expression.
📋 What You'll Learn
Create a pandas Series called product_codes with the exact values: 'A123', 'B456', 'C789', 'D012'
Create a regex pattern string called pattern that matches one or more digits
Use str.extract on product_codes with pattern to get the numbers
Print the extracted numbers as a pandas Series
💡 Why This Matters
🌍 Real World
Stores and businesses often have product codes mixing letters and numbers. Extracting parts of these codes helps analyze sales or inventory.
💼 Career
Data analysts and scientists use regex extraction to clean and prepare text data for analysis in many industries.
Progress0 / 4 steps
1
Create the product codes data
Create a pandas Series called product_codes with these exact values: 'A123', 'B456', 'C789', 'D012'.
Data Analysis Python
Hint
Use pd.Series and pass a list of the exact strings.
2
Create the regex pattern
Create a string variable called pattern that matches one or more digits using the regex '(\d+)'.
Data Analysis Python
Hint
The regex '(\d+)' matches one or more digits and captures them.
3
Extract numbers using str.extract
Use str.extract on product_codes with the pattern to extract the numbers. Save the result in a variable called numbers.
Data Analysis Python
Hint
Use product_codes.str.extract(pattern) and select the first column with [0] to get a Series.
4
Print the extracted numbers
Print the numbers Series to display the extracted numeric parts.
Data Analysis Python
Hint
Use print(numbers) to show the extracted numbers.
Practice
(1/5)
1. What does the str.extract method do in pandas when used with a regex pattern?
easy
A. It replaces matching text with a new string.
B. It deletes rows that don't match the pattern.
C. It pulls out matching parts of text into a new DataFrame.
D. It counts how many times the pattern appears.
Solution
Step 1: Understand str.extract purpose
The method is designed to find parts of text that match a regex pattern and extract them.
Step 2: Check what it returns
It returns a new DataFrame with the extracted groups or NaN if no match is found.
Final Answer:
It pulls out matching parts of text into a new DataFrame. -> Option C
Quick Check:
str.extract extracts text parts [OK]
Hint: Remember: extract pulls out text pieces using patterns [OK]
Common Mistakes:
Thinking it deletes rows instead of extracting text
Confusing extract with replace or count methods
Expecting a single string instead of a DataFrame
2. Which of the following is the correct syntax to extract a 3-digit number from a pandas Series df['code'] using str.extract?
easy
A. df['code'].str.extract('\d{3}')
B. df['code'].str.extract(r'(\d{3})')
C. df['code'].str.extract(r'\d{3}')
D. df['code'].str.extract('(\d{3})')
Solution
Step 1: Identify correct regex string format
Regex pattern must be a raw string (r'...') to handle backslashes properly.
Step 2: Check parentheses for capturing group
Parentheses are needed to capture the group to extract.
Final Answer:
df['code'].str.extract(r'(\d{3})') -> Option B
Quick Check:
Use raw string with parentheses for capture [OK]
Hint: Use raw string and parentheses for capture groups [OK]
A. The regex pattern lacks parentheses for capturing groups.
B. The regex pattern is invalid syntax.
C. The DataFrame column name is incorrect.
D. str.extract cannot extract digits.
Solution
Step 1: Check regex pattern for capture groups
str.extract requires parentheses to capture groups; '\d{3}' has none.
Step 2: Understand effect of missing parentheses
Without parentheses, str.extract returns NaN for all rows because no group is captured.
Final Answer:
The regex pattern lacks parentheses for capturing groups. -> Option A
Quick Check:
Parentheses needed to capture groups [OK]
Hint: Always use parentheses to capture groups in str.extract [OK]
Common Mistakes:
Forgetting parentheses around regex group
Assuming str.extract works without capture groups
Confusing str.extract with str.contains
5. You have a DataFrame df with a column 'data' containing strings like 'Order: #12345, Date: 2023-05-10'. You want to extract the order number and date into separate columns using str.extract. Which regex pattern correctly extracts both parts?
hard
A. r'Order: #(\d+), Date: (\d{4}-\d{2}-\d{2})'
B. r'Order: #(\d+), Date: \d{4}-\d{2}-\d{2}'
C. r'Order: #\d+, Date: (\d{4}-\d{2}-\d{2})'
D. r'Order: #(\d+), Date: (\d{4}/\d{2}/\d{2})'
Solution
Step 1: Identify needed capture groups
We need to capture order number digits and date in 'YYYY-MM-DD' format, so two groups are required.
Step 2: Check regex pattern correctness
r'Order: #(\d+), Date: (\d{4}-\d{2}-\d{2})' has two groups: '(\d+)' for order number and '(\d{4}-\d{2}-\d{2})' for date, matching the format exactly.
Final Answer:
r'Order: #(\d+), Date: (\d{4}-\d{2}-\d{2})' -> Option A
Quick Check:
Two capture groups matching order and date format [OK]
Hint: Use parentheses for each part you want to extract [OK]
Common Mistakes:
Missing parentheses around one or both groups
Wrong date format with slashes instead of dashes
Not capturing order number digits
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.