maxframe.dataframe.DataFrame.map#
- DataFrame.map(func, na_action=None, dtypes=None, dtype=None, skip_infer=False, **kwargs)#
对 DataFrame 的每个元素应用一个函数。
此方法将一个接受并返回标量的函数应用于 DataFrame 的每个元素。
- 参数:
func (callable) -- Python 函数,从单个值返回单个值。
na_action ({None, 'ignore'}, default None) -- 如果为 'ignore',则传播 NaN 值,但不将其传递给 func。
dtypes (Series, default None) -- 指定返回的 DataFrame 的数据类型。
dtype (np.dtype, default None) -- 指定返回的 DataFrame 所有列的数据类型,仅在未指定 dtypes 时有效。
skip_infer (bool, default False) -- 当未指定 dtypes 或 dtype 时是否推断数据类型。
**kwargs -- 传递给 func 的其他关键字参数。
- 返回:
转换后的 DataFrame。
- 返回类型:
参见
DataFrame.apply沿 DataFrame 的输入轴应用函数。
DataFrame.replace将 to_replace 中的值替换为 value。
Series.map对 Series 的每个元素应用函数。
示例
>>> import maxframe.dataframe as md >>> df = md.DataFrame([[1, 2.12], [3.356, 4.567]]) >>> df.execute() 0 1 0 1.000 2.120 1 3.356 4.567
>>> df.map(lambda x: len(str(x))).execute() 0 1 0 3 4 1 5 5
与 Series.map 类似,可以忽略 NA 值:
>>> df_copy = df.copy() >>> df_copy.iloc[0, 0] = md.NA >>> df_copy.map(lambda x: len(str(x)), na_action='ignore').execute() 0 1 0 NaN 4 1 5.0 5
也可以将 map 与不是 lambda 的函数一起使用:
>>> df.map(round, ndigits=1).execute() 0 1 0 1.0 2.1 1 3.4 4.6
注意,func 的向量化版本通常存在,它会快得多。你可以逐元素地对每个数字进行平方。
>>> df.map(lambda x: x**2).execute() 0 1 0 1.000000 4.494400 1 11.262736 20.857489
但在这种情况下最好避免使用 map。
>>> (df ** 2).execute() 0 1 0 1.000000 4.494400 1 11.262736 20.857489