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。

返回类型:

DataFrame or Series

备注

func 必须为每个输入元素返回一个值的可迭代对象。如果指定了 dtypesflatmap 将返回一个 DataFrame;如果指定了 dtypename,则将返回一个 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