mars.dataframe.DataFrame.transform#
- DataFrame.transform(func, axis=0, *args, dtypes=None, skip_infer=False, **kwargs)#
在自我上调用
func生成一个具有转换值的 DataFrame。生成的 DataFrame 将与自身具有相同的轴长度。
- Parameters
func (function, str, list 或 dict) –
用于转换数据的函数。如果是函数,必须在传递给 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