Bird
Raised Fist0
Data Analysis Pythondata~10 mins

Extracting with str.extract (regex) in Data Analysis Python - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to extract the first word from each string in the 'text' column.

Data Analysis Python
df['first_word'] = df['text'].str.[1]('(\\w+)')
Drag options to blanks, or click blank then click option'
Afindall
Bextract
Csplit
Dreplace
Attempts:
3 left
💡 Hint
Common Mistakes
Using str.findall returns a list of all matches, not a single extracted group.
Using str.split splits by delimiter, not regex groups.
Using str.replace changes text instead of extracting.
2fill in blank
medium

Complete the code to extract the year (4 digits) from the 'date' column strings.

Data Analysis Python
df['year'] = df['date'].str.[1]('(\\d{4})')
Drag options to blanks, or click blank then click option'
Acontains
Bmatch
Cextract
Dfindall
Attempts:
3 left
💡 Hint
Common Mistakes
Using str.contains returns True/False, not extracted text.
Using str.match only matches from the start of the string.
Using str.findall returns lists, not single extracted values.
3fill in blank
hard

Fix the error in the code to extract the domain name from email addresses in the 'email' column.

Data Analysis Python
df['domain'] = df['email'].str.extract('@(\w+\[1]\w+)')
Drag options to blanks, or click blank then click option'
A.
B*
C+
D?
Attempts:
3 left
💡 Hint
Common Mistakes
Using '+' or '*' without escaping the dot matches wrong patterns.
Not escaping the dot causes it to match any character.
4fill in blank
hard

Fill both blanks to extract the area code (3 digits) and the phone number (7 digits) from 'phone' column strings.

Data Analysis Python
df[['area_code', 'number']] = df['phone'].str.extract('\(([1])\) ([2])')
Drag options to blanks, or click blank then click option'
A\d{3}
B\w{3}
C\d{7}
D\w{7}
Attempts:
3 left
💡 Hint
Common Mistakes
Using \w matches letters and digits, not only digits.
Not matching the exact number of digits causes wrong extraction.
5fill in blank
hard

Fill all three blanks to create a dictionary comprehension that maps words to their lengths only if length is greater than 3.

Data Analysis Python
lengths = { [1] : [2] for [3] in words if len([3]) > 3 }
Drag options to blanks, or click blank then click option'
Aword
Blen(word)
Dw
Attempts:
3 left
💡 Hint
Common Mistakes
Using different variable names for key and loop variable causes errors.
Using the wrong expression for length causes wrong results.

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

  1. Step 1: Understand str.extract purpose

    The method is designed to find parts of text that match a regex pattern and extract them.
  2. Step 2: Check what it returns

    It returns a new DataFrame with the extracted groups or NaN if no match is found.
  3. Final Answer:

    It pulls out matching parts of text into a new DataFrame. -> Option C
  4. 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

  1. Step 1: Identify correct regex string format

    Regex pattern must be a raw string (r'...') to handle backslashes properly.
  2. Step 2: Check parentheses for capturing group

    Parentheses are needed to capture the group to extract.
  3. Final Answer:

    df['code'].str.extract(r'(\d{3})') -> Option B
  4. Quick Check:

    Use raw string with parentheses for capture [OK]
Hint: Use raw string and parentheses for capture groups [OK]
Common Mistakes:
  • Missing parentheses around the pattern
  • Not using raw string causing escape errors
  • Using double backslashes incorrectly
3. Given the following code:
import pandas as pd
df = pd.DataFrame({'text': ['ID123', 'ID456', 'NoID', 'ID789']})
df['number'] = df['text'].str.extract(r'ID(\d{3})')

What will be the content of the new column number?
medium
A. [NaN, NaN, NaN, NaN]
B. ['ID123', 'ID456', 'NoID', 'ID789']
C. ['123', '456', 'NoID', '789']
D. ['123', '456', NaN, '789']

Solution

  1. Step 1: Understand the regex pattern

    The pattern 'ID(\d{3})' looks for 'ID' followed by exactly 3 digits and extracts the digits.
  2. Step 2: Apply extraction to each row

    'ID123' -> '123', 'ID456' -> '456', 'NoID' -> no match so NaN, 'ID789' -> '789'.
  3. Final Answer:

    ['123', '456', NaN, '789'] -> Option D
  4. Quick Check:

    Extract digits after 'ID' or NaN if no match [OK]
Hint: Extracted groups appear; no match gives NaN [OK]
Common Mistakes:
  • Expecting full string instead of just digits
  • Not realizing unmatched rows become NaN
  • Confusing extracted text with original
4. Consider this code snippet:
import pandas as pd
df = pd.DataFrame({'info': ['abc123', 'def456', 'ghi789']})
df['extracted'] = df['info'].str.extract('\d{3}')

What is the issue with this code?
medium
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

  1. Step 1: Check regex pattern for capture groups

    str.extract requires parentheses to capture groups; '\d{3}' has none.
  2. Step 2: Understand effect of missing parentheses

    Without parentheses, str.extract returns NaN for all rows because no group is captured.
  3. Final Answer:

    The regex pattern lacks parentheses for capturing groups. -> Option A
  4. 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

  1. 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.
  2. 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.
  3. Final Answer:

    r'Order: #(\d+), Date: (\d{4}-\d{2}-\d{2})' -> Option A
  4. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard