Using str.len() to Find String Lengths in a DataFrame
📖 Scenario: You work at a small bookstore. You have a list of book titles and want to find out how many letters each title has. This helps you decide how much space each title will take on the shelf labels.
🎯 Goal: Build a small program that creates a list of book titles, then uses str.len() to find the length of each title. Finally, display the lengths alongside the titles.
📋 What You'll Learn
Create a pandas DataFrame with a column named Title containing the exact book titles.
Create a variable called title_lengths that stores the length of each title using str.len().
Add a new column called Length to the DataFrame using title_lengths.
Print the DataFrame to show the book titles alongside their lengths.
💡 Why This Matters
🌍 Real World
Bookstores and libraries often need to manage book titles and labels. Knowing the length of titles helps in designing labels and organizing shelves.
💼 Career
Data analysts and data scientists use string operations like <code>str.len()</code> to clean and analyze text data in many industries, including retail and publishing.
Progress0 / 4 steps
1
Create the DataFrame with book titles
Create a pandas DataFrame called books with a column named Title containing these exact book titles: 'The Great Gatsby', '1984', 'To Kill a Mockingbird', 'Pride and Prejudice', 'Moby-Dick'.
Pandas
Hint
Use pd.DataFrame with a dictionary where the key is 'Title' and the value is the list of book titles.
2
Create a variable to hold the lengths of each title
Create a variable called title_lengths that uses books['Title'].str.len() to find the length of each book title.
Pandas
Hint
Use str.len() on the Title column to get the length of each string.
3
Add the lengths as a new column in the DataFrame
Add a new column to the books DataFrame called Length and set it equal to the title_lengths variable.
Pandas
Hint
Assign the title_lengths Series to a new column Length in the books DataFrame.
4
Print the DataFrame with titles and their lengths
Print the books DataFrame to display the book titles alongside their lengths.
Pandas
Hint
Use print(books) to show the DataFrame with the new Length column.
Practice
(1/5)
1. What does the pandas method str.len() do when applied to a Series of strings?
easy
A. It returns the length of each string in the Series.
B. It counts the number of words in each string.
C. It converts all strings to lowercase.
D. It removes spaces from each string.
Solution
Step 1: Understand the method purpose
The str.len() method is designed to count characters in each string element of a pandas Series.
Step 2: Compare with other options
Counting words, converting case, or removing spaces are different string operations, not what str.len() does.
Final Answer:
It returns the length of each string in the Series. -> Option A
Quick Check:
str.len() = length count [OK]
Hint: Remember: str.len() counts characters, not words or changes text [OK]
Common Mistakes:
Confusing length with word count
Thinking it changes string case
Assuming it removes spaces
2. Which of the following is the correct syntax to get the length of each string in a pandas Series named names?
easy
A. names.str.length()
B. names.len()
C. len(names)
D. names.str.len()
Solution
Step 1: Recall pandas string accessor usage
To use string methods on a Series, you must use the .str accessor followed by the method name.
Step 2: Identify the correct method name
The method to get string length is len(), so the correct syntax is names.str.len().
Final Answer:
names.str.len() -> Option D
Quick Check:
Use .str.len() on Series for string lengths [OK]
Hint: Use .str before string methods on Series [OK]
Common Mistakes:
Calling len() directly on Series
Using .len() without .str
Using incorrect method name like .length()
3. Given the pandas Series data = pd.Series(['apple', 'banana', '', None]), what is the output of data.str.len()?
medium
A. [5, 6, 0, 0]
B. [5, 6, NaN, 0]
C. [5, 6, 0, NaN]
D. [5, 6, 1, NaN]
Solution
Step 1: Calculate length for each string
'apple' has 5 characters, 'banana' has 6, '' is empty so length 0, and None is missing so length is NaN.
Step 2: Understand handling of None values
pandas returns NaN for None or missing values when using str.len().
Final Answer:
[5, 6, 0, NaN] -> Option C
Quick Check:
Empty string = 0, None = NaN in str.len() [OK]
Hint: Empty string length is 0; None becomes NaN [OK]
Common Mistakes:
Counting None as 0 instead of NaN
Assuming empty string length is NaN
Mixing order of output values
4. What is wrong with this code snippet?
import pandas as pd
data = pd.Series(['cat', 'dog', 'bird'])
lengths = data.len()
medium
A. The method len() should be called as data.str.len()
B. The Series object does not support len() method
C. The code is correct and will run without errors
D. You must import numpy to use len() on Series
Solution
Step 1: Identify method usage on Series
The len() function is a Python built-in and cannot be called directly on a pandas Series to get string lengths.
Step 2: Correct method to get string lengths
To get length of strings in a Series, use data.str.len() instead of data.len().
Final Answer:
The method len() should be called as data.str.len() -> Option A
Quick Check:
Use .str.len() for string lengths on Series [OK]
Hint: Use .str before string methods on Series [OK]
Common Mistakes:
Calling len() directly on Series
Forgetting .str accessor
Assuming Series has len() method for strings
5. You have a pandas DataFrame df with a column 'comments' containing text data. You want to create a new column 'length' that stores the length of each comment, but some comments are missing (NaN). Which code correctly creates the 'length' column with lengths and keeps NaN for missing comments?
hard
A. df['length'] = df['comments'].apply(len)
B. df['length'] = df['comments'].str.len()
C. df['length'] = df['comments'].map(len)
D. df['length'] = df['comments'].fillna('').str.len()
Solution
Step 1: Understand handling of missing values
The str.len() method returns NaN for missing values, preserving them in the new column.
Step 2: Compare with other options
Using apply(len) or map(len) will cause errors on NaN values because Python's len() cannot handle None/NaN. Filling NaN with empty string changes missing data to length 0, which is incorrect.
Final Answer:
df['length'] = df['comments'].str.len() -> Option B
Quick Check:
str.len() keeps NaN for missing data [OK]
Hint: Use str.len() to keep NaN for missing strings [OK]
Common Mistakes:
Using apply(len) causing errors on NaN
Replacing NaN with empty string losing missing info
Using map(len) without handling NaN
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.