pandas.DataFrame.map#

DataFrame.map(func, na_action=None, **kwargs)[源代码][源代码]#

对 Dataframe 的每个元素应用一个函数。

Added in version 2.1.0: DataFrame.applymap 已被弃用并重命名为 DataFrame.map。

此方法将接受并返回标量的函数应用于DataFrame的每个元素。

参数:
funccallable

Python 函数,从一个单一值返回一个单一值。

na_action{None, ‘ignore’}, 默认 None

如果为 ‘ignore’,则传播 NaN 值,而不将它们传递给 func。

**kwargs

传递给 func 的额外关键字参数。

返回:
DataFrame

转换后的 DataFrame。

参见

DataFrame.apply

沿 DataFrame 的输入轴应用函数。

DataFrame.replace

to_replace 中的值替换为 value

Series.map

在 Series 上逐元素应用一个函数。

例子

>>> 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

像 Series.map 一样,可以忽略 NA 值:

>>> 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

也可以使用 map 与不是 lambda 函数的函数:

>>> df.map(round, ndigits=1)
     0    1
0  1.0  2.1
1  3.4  4.6

请注意,func 的矢量化版本通常存在,这将快得多。你可以逐元素地对每个数字进行平方。

>>> df.map(lambda x: x**2)
           0          1
0   1.000000   4.494400
1  11.262736  20.857489

但在那种情况下最好避免使用地图。

>>> df**2
           0          1
0   1.000000   4.494400
1  11.262736  20.857489