mapInPandas

Сопоставляет итератор пакетов в текущем кадре данных с помощью собственной функции Python, выполняемой на пандах DataFrames как входных, так и выходных данных, и возвращает результат в виде кадра данных.

Синтаксис

mapInPandas(func: "PandasMapIterFunction", schema: Union[StructType, str], barrier: bool = False, profile: Optional[ResourceProfile] = None)

Параметры

Параметр Тип Описание
func function собственная функция Python принимает итератор pandas.DataFrame и выводит итератор pandas.DataFrame.
schema DataType или str возвращаемый тип func в PySpark. Значение может быть либо объектом, либо pyspark.sql.types.DataType строкой типа, отформатированным DDL.
barrier bool, необязательный, по умолчанию false Используйте выполнение режима барьера, гарантируя, что все Python работники на этапе будут запущены одновременно.
profile ResourceProfile, необязательный Необязательный resourceProfile, используемый для mapInPandas.

Возвраты

DataFrame

Примеры

df = spark.createDataFrame([(1, 21), (2, 30)], ("id", "age"))

def filter_func(iterator):
    for pdf in iterator:
        yield pdf[pdf.id == 1]

df.mapInPandas(filter_func, df.schema).show()
# +---+---+
# | id|age|
# +---+---+
# |  1| 21|
# +---+---+

def mean_age(iterator):
    for pdf in iterator:
        yield pdf.groupby("id").mean().reset_index()

df.mapInPandas(mean_age, "id: bigint, age: double").show()
# +---+----+
# | id| age|
# +---+----+
# |  1|21.0|
# |  2|30.0|
# +---+----+

df.mapInPandas(filter_func, df.schema, barrier=True).collect()
# [Row(id=1, age=21)]