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