mapInPandas

Mappe un itérateur de lots dans le DataFrame actuel à l’aide d’une fonction native Python effectuée sur pandas DataFrames à la fois comme entrée et sortie, et retourne le résultat sous forme de DataFrame.

Syntaxe

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

Paramètres

Paramètre Type Description
func function une fonction native Python qui accepte un itérateur de pandas.DataFrames et génère un itérateur de pandas.DataFrames.
schema DataType ou str type de retour de l’objet func PySpark. La valeur peut être un pyspark.sql.types.DataType objet ou une chaîne de type au format DDL.
barrier bool, facultatif, false par défaut Utilisez l’exécution du mode barrière, ce qui garantit que tous les travailleurs Python au cours de l’étape seront lancés simultanément.
profile ResourceProfile, facultatif ResourceProfile facultatif à utiliser pour mapInPandas.

Retours

DataFrame

Exemples

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