Tengo un dataframe, con columnas de tiempo,a,b,c,d,val.
Me gustaría crear un dataframe, con columna adicional, que contendrá el número de fila de la fila, dentro de cada grupo, donde a,b,c,d es un grupo clave.

He probado con chispa sql, mediante la definición de una función de la ventana, en particular, en sql se parecerá a esto:

select time, a,b,c,d,val, row_number() over(partition by a,b,c,d order by     time) as rn from table
group by a,b,c,d,val

Me gustaría hacer esto en el dataframe sí mismo, sin necesidad de utilizar sparksql.

Gracias

  • Qué quieres decir sin utilizar sparksql?
InformationsquelleAutor matlabit | 2016-05-23

1 Comentario

  1. 10

    No sé la api de python demasiado, pero voy a darle una oportunidad. Puedes probar algo como:

    from pyspark.sql import functions as F
    
    df.withColumn("row_number", F.row_number().over(Window.partitionBy("a","b","c","d").orderBy("time"))).show()
    • Sí, eso es lo que hice yo, se olvida de la partición parte, df = df.withColumn(«id»,F. rowNumber().más de(la Ventana.partitionBy(«a»,»b»,»c»,»d»).orderBy(col(«tiempo»)))), Pero me gustaría hacerlo sin que. Gracias
    • Nota, esa chispa <=1.6 utiliza diferentes nombre de la función rowNumber()
    • gran respuesta, pero se olvidó de algunas paréntesis: F. row_number().más de…
    • Gracias @laguittemh
    • es necesario el uso de la orderby parte ? podemos añadir la de row_number reserva natural de pedidos sin pedirlo ?
    • puede que necesite crear una nueva pregunta para que. Puede haber algunas complejidades no veo a la derecha de la parte superior de mi cabeza, pero necesita orderby y, probablemente, una nueva columna con el row_number a usarlo.
    • Podría crear una nueva pregunta en su caso? Daría más visibilidad a su problema.

Dejar respuesta

Please enter your comment!
Please enter your name here