maxframe.dataframe.Series.mf.flatmap#
- Series.mf.flatmap(func: Callable, dtypes=None, dtype=None, name=None, args=(), **kwargs)#
对每一行应用给定函数,然后展平结果。如果您的转换对每个输入行返回多行,请使用此方法。
- 此函数对 Series 的每个元素应用一个转换,该转换可以返回零个
或多个值,从而有效地展平 Python 生成器、类列表集合和 DataFrame。
- 参数:
func (Callable) -- 应用于 Series 每个元素的函数。它应接受一个标量值(如果
raw=True则为数组)并返回一个值的列表或可迭代对象。dtypes (Series, default None) -- 指定返回的 DataFrame 的 dtypes。不能与 dtype 同时使用。
dtype (numpy.dtype, default None) -- 指定返回的 Series 的 dtype。不能与 dtypes 同时使用。
name (str, default None) -- 指定返回的 Series 的名称。
args (tuple) -- 传递给
func的位置参数。**kwargs -- 作为关键字参数传递给
func的额外关键字参数。
- 返回:
当指定 dtypes 时返回 DataFrame,否则返回 Series。
- 返回类型:
备注
func必须为每个输入元素返回一个值的可迭代对象。如果指定了dtypes,flatmap 将返回一个 DataFrame;如果指定了dtype和name,则将返回一个 Series。生成的 DataFrame/Series 的索引将根据
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(x): ... return [x * 2, x * 3]
通过指定
dtype和返回列表的函数,将更多元素作为 Series 返回:>>> df['A'].mf.flatmap(generate_values_array, dtype="int", name="C").execute() 0 2 0 3 1 4 1 6 2 6 2 9 Name: C, dtype: int64
指定
dtypes以将多列作为 DataFrame 返回:>>> def generate_values_in_generator(x): ... yield pd.Series([x * 2, x * 4]) ... yield pd.Series([x * 3, x * 5])
>>> df['A'].mf.flatmap(generate_values_in_generator, dtypes={"A": "int", "B": "int"}).execute() A B 0 2 4 0 3 5 1 4 8 1 6 10 2 6 12 2 9 15