pandas.DataFrame.map#
- DataFrame.map(func, na_action=None, **kwargs)[源码]#
逐元素地将函数应用于 DataFrame。
Added in version 2.1.0: DataFrame.applymap was deprecated and renamed to DataFrame.map。
此方法将一个接受并返回标量值的函数应用于 DataFrame 的每个元素。
- 参数:
- funccallable
Python 函数,从单个值返回单个值。
- na_action{None, ‘ignore’}, default None
如果为 ‘ignore’,则传播 NaN 值,而不将其传递给 func。
- **kwargs
传递给 func 的附加关键字参数。
- 返回:
- DataFrame
转换后的 DataFrame。
另请参阅
DataFrame.apply沿 DataFrame 输入轴应用函数。
DataFrame.replace用value替换to_replace中给定的值。
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
但在这种情况下,最好避免使用 map。
>>> df**2 0 1 0 1.000000 4.494400 1 11.262736 20.857489