grupo por semana en pandas

Estoy teniendo este dataframe:

Name Date Quantity Apple 07/11/17 20 orange 07/14/17 20 Apple 07/14/17 70 Orange 07/25/17 40 Apple 07/20/17 30 

Quiero agregar esto por Nombre y Fecha para obtener la sum de las cantidades Detalles:

Fecha : Grupo, el resultado debe ser al principio de la semana (o solo el lunes)

Cantidad : Suma, si dos o más registros tienen el mismo nombre y fecha (si cae en el mismo intervalo)

La salida deseada se da a continuación:

 Name Date Quantity Apple 07/10/17 90 orange 07/10/17 20 Apple 07/17/17 30 orange 07/24/17 40 

Gracias por adelantado

Primero convierta la date columna a to_datetime y reste una semana.

Luego use groupby con Grouper por W-MON y la sum agregada:

 df['Date'] = pd.to_datetime(df['Date']) - pd.to_timedelta(7, unit='d') df = df.groupby(['Name', pd.Grouper(key='Date', freq='W-MON')])['Quantity'] .sum() .reset_index() .sort_values('Date') print (df) Name Date Quantity 0 Apple 2017-07-10 90 3 orange 2017-07-10 20 1 Apple 2017-07-17 30 2 Orange 2017-07-24 40 

groupby , groupby resample con W-Mon y groupby :

 df.groupby('Name').resample('W-Mon', on='Date').sum().reset_index().sort_values(by='Date') 

Salida:

  Name Date Quantity 0 Apple 2017-07-17 90 3 orange 2017-07-17 20 1 Apple 2017-07-24 30 2 Orange 2017-07-31 40 

Primero convierta la fecha de la columna a tiempo. Esto se agrupará por semana a partir de los lunes. Emitirá el número de la semana (pero puede cambiar eso buscando en

http://strftime.org/

 df.groupby(['name', df['date'].dt.strftime('%W')])['quantity'].sum() 

Salida:

 name date apple 28 90 29 30 orange 28 20 30 40