Rellene los valores de un dataframe a otro con ID coincidentes

Tengo dos marcos de datos de pandas, quiero obtener la sum de items_bought para cada ID en DF1. Luego, agregue una columna a DF2 que contenga la sum de items_bought calculada a partir de DF1 con el ID coincidente; llénela con 0. ¿Cómo puedo hacer esto de manera elegante y eficiente?

DF1

ID | items_bought 1 5 3 8 2 2 3 5 4 6 2 2 

DF2

 ID 1 2 8 3 2 

Resultado deseado: DF2 se convierte

 ID | items_bought 1 5 2 4 8 0 3 13 2 4 

 df1.groupby('ID').sum().loc[df2.ID].fillna(0).astype(int) Out[104]: items_bought ID 1 5 2 4 8 0 3 13 2 4 
  1. Trabaja en df1 para calcular la sum de cada ID .
  2. El dataframe resultante ahora está indexado por ID , por lo que puede seleccionar con ID df2 llamando a loc .
  3. Rellena los huecos con fillna .
  4. NA son manejados por el tipo de flotador. Ahora que se han eliminado, convierta la columna de nuevo a entero.

Solución con groupby y sum , luego fill_value=0 con fill_value=0 y el último reset_index :

 df2 = df1.groupby('ID').items_bought.sum().reindex(df2.ID, fill_value=0).reset_index() print (df2) ID items_bought 0 1 5 1 2 4 2 8 0 3 3 13 4 2 4