Apply a function to a Dataframe elementwise.
Added in version 2.1.0: DataFrame.applymap was deprecated and renamed to DataFrame.map.
This method applies a function that accepts and returns a scalar to every element of a DataFrame.
Python function, returns a single value from a single value.
If ‘ignore’, propagate NaN values, without passing them to func.
Additional keyword arguments to pass as keywords arguments to func.
Transformed DataFrame.
See also
DataFrame.applyApply a function along input axis of DataFrame.
DataFrame.replaceReplace values given in to_replace with value.
Series.mapApply a function elementwise on a Series.
Examples
>>> df = pd.DataFrame([[1, 2.12], [3.356, 4.567]])
>>> df
0 1
0 1.000 2.120
1 3.356 4.567
>>> df.map(lambda x: len(str(x)))
0 1
0 3 4
1 5 5
Like Series.map, NA values can be ignored:
>>> df_copy = df.copy()
>>> df_copy.iloc[0, 0] = pd.NA
>>> df_copy.map(lambda x: len(str(x)), na_action='ignore')
0 1
0 NaN 4
1 5.0 5
It is also possible to use map with functions that are not lambda functions:
>>> df.map(round, ndigits=1)
0 1
0 1.0 2.1
1 3.4 4.6
Note that a vectorized version of func often exists, which will be much faster. You could square each number elementwise.
>>> df.map(lambda x: x**2)
0 1
0 1.000000 4.494400
1 11.262736 20.857489
But it’s better to avoid map in that case.
>>> df ** 2
0 1
0 1.000000 4.494400
1 11.262736 20.857489
© 2008–2011, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
© 2011–2025, Open source contributors
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/2.3.0/reference/api/pandas.DataFrame.map.html