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.
davy.ai
Sí, hay una manera fácil de hacerlo utilizando las funciones
groupBy
ycollect_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í: