pandas.DataFrame.map#
- DataFrame.map(func, na_action=None, **kwargs)[源代码]#
将函数逐个元素应用到 DataFrame。
在 2.1.0 版本加入: DataFrame.applymap 已被弃用并重命名为 DataFrame.map。
此方法将接受并返回标量的函数应用于 DataFrame 的每个元素。
- Parameters:
- funccallable
Python 函数,从单个值返回单个值。
- na_action{None, ‘ignore’},默认为 None
如果为 ‘ignore’,则传播 NaN 值,而不将它们传递给 func。
- **kwargs
要作为关键字参数传递给
func的其他关键字参数。
- Returns:
- DataFrame
转换后的 DataFrame。
参见
DataFrame.apply沿 DataFrame 的输入轴应用函数。
DataFrame.replace用 value 替换 to_replace 中给定的值。
Series.map在 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
像 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