maxframe.dataframe.DataFrame.mf.flatmap#
- DataFrame.mf.flatmap(func: Callable, dtypes=None, raw=False, args=(), **kwargs)#
对每一行应用给定的函数,然后将结果展平。如果您的转换对每个输入行返回多个行,请使用此方法。
此函数对 DataFrame 的每一行应用一个转换,该转换可以返回零个或多个值,有效地将 Python 生成器、类列表集合和 DataFrame 展平。
- 参数:
- 返回:
返回指定 dtypes 的 DataFrame。
- 返回类型:
备注
func必须为每个输入行返回一个可迭代的值。生成的 DataFrame 的索引将根据 func 生成的输出行数重复。示例
>>> import numpy as np >>> import maxframe.dataframe as md >>> df = md.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}) >>> df.execute() A B 0 1 4 1 2 5 2 3 6
定义一个接受一个数字并返回两个数字列表的函数:
>>> def generate_values_array(row): ... return [row['A'] * 2, row['B'] * 3]
定义一个接受一行并返回两行两列的函数:
>>> def generate_values_in_generator(row): ... yield [row[0] * 2, row[1] * 4] ... yield [row[0] * 3, row[1] * 5]
这等价于以下返回一个 DataFrame 的函数:
>>> def generate_values_in_dataframe(row): ... return pd.DataFrame([[row[0] * 2, row[1] * 4], [row[0] * 3, row[1] * 5]])
使用返回 DataFrame 的函数指定 dtypes:
>>> df.mf.flatmap(generate_values_array, dtypes=pd.Series({'A': 'int'})).execute() A 0 2 0 12 1 4 1 15 2 6 2 18
指定 raw=True 以将输入行作为数组传递:
>>> df.mf.flatmap(generate_values_in_generator, dtypes={"A": "int", "B": "int"}, raw=True).execute() A B 0 2 16 0 3 20 1 4 20 1 6 25 2 6 24 2 9 30