We use applymap() to change or check every single value in a table (DataFrame) easily.
You want to add 1 to every number in a table of sales data.
You need to convert all text in a table to uppercase.
You want to check if each value in a table is positive or not.
You want to format all numbers in a table to show two decimal places.
Syntax
Pandas
DataFrame.applymap(function)
The function is applied to each cell in the DataFrame.
This works only on DataFrames, not on Series (single columns).
Examples
Adds 1 to every value in the DataFrame.
Pandas
df.applymap(lambda x: x + 1)
Converts every string in the DataFrame to uppercase.
Pandas
df.applymap(str.upper)
Checks if each value is greater than zero, returns True or False.
Pandas
df.applymap(lambda x: x > 0)
Sample Program
This code creates a table with numbers. Then it changes each number to the word 'Positive' if it is more than zero, or 'Non-positive' if it is zero or less.
Pandas
import pandas as pd
# Create a simple DataFrame
data = {'A': [1, -2, 3], 'B': [4, 5, -6]}
df = pd.DataFrame(data)
# Use applymap to check if values are positive
result = df.applymap(lambda x: 'Positive'if x > 0else'Non-positive')
print(result)
OutputSuccess
Important Notes
applymap() is slower than vectorized operations, so use it for simple or custom cell-wise changes.
For operations on rows or columns, use apply() instead.
Summary
applymap() changes every cell in a DataFrame using a function.
It is useful for cell-by-cell transformations or checks.
Works only on DataFrames, not on single columns or Series.
Practice
(1/5)
1. What does the applymap() function do in a pandas DataFrame?
easy
A. Applies a function to each column separately.
B. Applies a function to every single cell in the DataFrame.
C. Applies a function to each row separately.
D. Applies a function only to numeric columns.
Solution
Step 1: Understand the purpose of applymap()
applymap() is designed to apply a function to every individual cell in a DataFrame, not just rows or columns.
Step 2: Compare with other pandas functions
Functions like apply() work on rows or columns, but applymap() works cell-by-cell.
Final Answer:
Applies a function to every single cell in the DataFrame. -> Option B
Quick Check:
applymap() = cell-wise function application [OK]
Hint: Remember: applymap() works on each cell, not rows or columns [OK]
Common Mistakes:
Confusing applymap() with apply()
Thinking applymap() works on Series
Assuming applymap() only works on numeric data
2. Which of the following is the correct syntax to use applymap() on a DataFrame df with a function func?
easy
A. df.applymap(func)
B. df.applymap = func()
C. df.applymap[func]
D. applymap(df, func)
Solution
Step 1: Recall the method call format
In pandas, applymap() is a method of DataFrame objects and is called as df.applymap(func).
Step 2: Check other options for syntax errors
Options B, C, and D do not follow valid Python or pandas syntax for method calls.
Final Answer:
df.applymap(func) -> Option A
Quick Check:
Method call syntax = df.applymap(func) [OK]
Hint: Use dot notation and parentheses: df.applymap(func) [OK]
Common Mistakes:
Using assignment instead of method call
Using square brackets instead of parentheses
Calling applymap as a standalone function
3. Given the DataFrame df below:
A B
0 1 4
1 2 5
2 3 6
What is the output of df.applymap(lambda x: x * 2)?
medium
A. A B
0 1 4
1 2 5
2 3 6
B. A B
0 1 8
1 4 10
2 6 12
C. A B
0 2 8
1 4 10
2 6 12
D. Error: lambda function not supported
Solution
Step 1: Understand the lambda function
The lambda function doubles each value: lambda x: x * 2.
Step 2: Apply the function to each cell
Each cell in the DataFrame is multiplied by 2, so 1 becomes 2, 4 becomes 8, etc.
Final Answer:
A B
0 2 8
1 4 10
2 6 12 -> Option C
Quick Check:
Each cell doubled = output B [OK]
Hint: applymap applies function cell-wise; multiply each cell by 2 [OK]
Common Mistakes:
Thinking applymap works column-wise
Expecting original DataFrame unchanged
Assuming lambda functions cause errors
4. What is wrong with this code snippet?
import pandas as pd
df = pd.DataFrame({'A':[1,2], 'B':[3,4]})
result = df.applymap(lambda x: x + 1)
Why might result be the same as df?
medium
A. The DataFrame contains non-numeric data, so applymap fails silently.
B. The lambda function is not applied because applymap was not called correctly.
C. Nothing is wrong; result will be different from df.
D. The code is correct, but the result is not assigned back to df.
Solution
Step 1: Check the code correctness
The code correctly creates a DataFrame and applies applymap() with a lambda that adds 1.
Step 2: Understand the result assignment
The result is stored in result, which will be different from df because each cell is incremented by 1.
Final Answer:
The code is correct, but the result is not assigned back to df. -> Option D
Quick Check:
applymap() works and returns new DataFrame [OK]
Hint: applymap returns new DataFrame; original stays unchanged [OK]
Common Mistakes:
Expecting applymap to modify df in place
Thinking applymap fails on numeric data
Confusing assignment of result with in-place change
5. You have a DataFrame df with mixed data types:
A B
0 1 foo
1 2 bar
2 3 baz
You want to convert all numeric cells to their squares but leave non-numeric cells unchanged. Which applymap() function achieves this?
hard
A. df.applymap(lambda x: x**2 if isinstance(x, (int, float)) else x)
B. df.applymap(lambda x: x**2)
C. df.applymap(lambda x: str(x))
D. df.applymap(lambda x: x**2 if isinstance(x, str) else x)
Solution
Step 1: Identify the requirement
We want to square numeric values only and keep strings unchanged.
Step 2: Analyze each option
df.applymap(lambda x: x**2 if isinstance(x, (int, float)) else x) checks if the cell is int or float, then squares it; else returns original. df.applymap(lambda x: x**2) squares all cells, causing error on strings. df.applymap(lambda x: str(x)) converts all to strings, losing numeric info. df.applymap(lambda x: x**2 if isinstance(x, str) else x) squares strings (causing TypeError) and leaves numerics unchanged.
Final Answer:
df.applymap(lambda x: x**2 if isinstance(x, (int, float)) else x) -> Option A
Quick Check:
Use type check inside applymap to selectively transform [OK]
Hint: Use isinstance check inside applymap to handle mixed types [OK]
Common Mistakes:
Applying math operations to strings causing errors
Not checking data type before transformation
Converting all data to string losing numeric info
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.