mars.dataframe.DataFrame.transform#

DataFrame.transform(func, axis=0, *args, dtypes=None, skip_infer=False, **kwargs)#

在自我上调用 func 生成一个具有转换值的 DataFrame。

生成的 DataFrame 将与自身具有相同的轴长度。

Parameters
  • func (function, str, listdict) –

    用于转换数据的函数。如果是函数,必须在传递给 DataFrame 或传递给 DataFrame.apply 时有效。

    接受的组合有:

    • 函数

    • 字符串函数名称

    • 函数和/或函数名称的列表,例如 [np.exp. 'sqrt']

    • 轴标签的字典 -> 函数、函数名称或此类的列表。

  • axis ({0'index', 1'columns'}, 默认 0) – 如果是 0 或 ‘index’: 对每一列应用函数。 如果是 1 或 ‘columns’: 对每一行应用函数。

  • dtypes (Series, 默认值为 None) – 指定返回的 DataFrames 的数据类型。有关更多详细信息,请参见 说明

  • skip_infer (bool, 默认值为 False) – 当未指定 dtypes 或 output_type 时,是否推断数据类型。

  • *args – 传递给 func 的位置参数。

  • **kwargs – 传递给 func 的关键字参数。

Returns

一个必须与自身长度相同的DataFrame。

Return type

数据框

:raises ValueError : 如果返回的 DataFrame 的长度与 self 不同:

另请参阅

DataFrame.agg

仅执行聚合类型操作。

DataFrame.apply

在DataFrame上调用函数。

备注

在决定输出数据类型和返回值的形状时,Mars 将尝试将 func 应用到一个模拟的 DataFrame 上,这个应用调用可能会失败。当发生这种情况时,您需要指定一个列表或 pandas Series 作为 dtypes 的输出 DataFrame。

示例

>>> import mars.tensor as mt
>>> import mars.dataframe as md
>>> df = md.DataFrame({'A': range(3), 'B': range(1, 4)})
>>> df.execute()
   A  B
0  0  1
1  1  2
2  2  3
>>> df.transform(lambda x: x + 1).execute()
   A  B
0  1  2
1  2  3
2  3  4

尽管生成的 DataFrame 必须与输入的 DataFrame 长度相同,但可以提供多个输入函数:

>>> s = md.Series(range(3))
>>> s.execute()
0    0
1    1
2    2
dtype: int64
>>> s.transform([mt.sqrt, mt.exp]).execute()
       sqrt        exp
0  0.000000   1.000000
1  1.000000   2.718282
2  1.414214   7.389056