es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo agregar una columna a PySpark DF, el formato de datos debe ser una lista y proviene de datos agrupados de la tabla original.

Pregunta

Soy nuevo en pyspark, no estoy seguro si hay una manera fácil de hacer esto.

Tengo un df con los intereses de las personas, por ejemplo:

nombre interés
A gimnasio
A comida
A juegos
B juegos

A partir de este df, me gustaría crear uno nuevo de la siguiente manera:

nombre intereses
A gimnasio;comida;juegos
B juegos

¿Alguien puede ayudarme con esto? Perdón de antemano si no expliqué lo suficientemente claro la pregunta.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una manera fácil de hacerlo utilizando las funciones groupBy y collect_list en PySpark.

    Primero, necesitas agrupar el dataframe por la columna name:

    python
    df_grouped = df.groupBy('name')

    Luego, puedes utilizar la función collect_list para recopilar los intereses en una lista:

    python
    df_grouped = df_grouped.agg(F.collect_list('interest').alias('interests'))

    Finalmente, puedes utilizar la función concat_ws para unir la lista de intereses en una sola cadena:

    python
    df_grouped = df_grouped.withColumn('interests', F.concat_ws(';', 'interests'))

    El dataframe resultante debe verse así:

    name interests
    A gym;food;games
    B games

Comments are closed.