Tengo una pregunta,
Tengo un dataframe como la siguiente

In [94]: prova_df.show()


order_item_order_id order_item_subtotal
1                   299.98             
2                   199.99             
2                   250.0              
2                   129.99             
4                   49.98              
4                   299.95             
4                   150.0              
4                   199.92             
5                   299.98             
5                   299.95             
5                   99.96              
5                   299.98             

Lo que me gustaría hacer es calcular, para cada valor de la primera columna, la suma de los valores correspondientes de la segunda columna.
He intentado hacerlo con el siguiente código:

from pyspark.sql import functions as func
prova_df.groupBy("order_item_order_id").agg(func.sum("order_item_subtotal")).show()

Que da una salida

SUM('order_item_subtotal)
129.99000549316406       
579.9500122070312        
199.9499969482422        
634.819995880127         
434.91000747680664 

Que no estoy tan seguro de si está haciendo lo correcto.
¿Por qué no se muestra también la información de la primera columna?
Gracias de antemano por sus respuestas

InformationsquelleAutor Paolo Lami | 2015-11-27

2 Comentarios

  1. 7

    ¿Por qué no se muestra también la información de la primera columna?

    Más probable es porque estás usando anticuado Chispa 1.3.x. Si ése es el caso, usted tiene que repetir columnas de agrupación dentro de agg de la siguiente manera:

    (df
        .groupBy("order_item_order_id")
        .agg(func.col("order_item_order_id"), func.sum("order_item_subtotal"))
        .show())
  2. -1

    Usted puede usar las particiones y la función de la ventana para que:

    df.withColumn(value_field, f.sum("order_item_subtotal") \
      .over(Window.partitionBy("order_item_order_id"))) \
      .show()
    • ¿qué es value_field aquí?
    • Sólo una cadena arbitraria que desea que la columna se denomina

Dejar respuesta

Please enter your comment!
Please enter your name here