mapInPandas

Asigna un iterador de lotes en el DataFrame actual mediante una función nativa de Python que se realiza en dataFrames de Pandas como entrada y salida y devuelve el resultado como dataframe.

Sintaxis

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

Parámetros

Parámetro Tipo Descripción
func function una función nativa Python que toma un iterador de pandas.DataFrames y genera un iterador de pandas.DataFrames.
schema DataType o str el tipo de valor devuelto de func en PySpark. El valor puede ser un pyspark.sql.types.DataType objeto o una cadena de tipo con formato DDL.
barrier bool, opcional, false predeterminado Use la ejecución del modo de barrera, asegurándose de que todos los Python trabajadores de la fase se iniciarán simultáneamente.
profile ResourceProfile, opcional ResourceProfile opcional que se usará para mapInPandas.

Devoluciones

DataFrame

Ejemplos

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)]