Come implementare conteggi accurati o somme quando si dispone di un diverso numero di giorni della settimana?

datascience.stackexchange https://datascience.stackexchange.com/questions/11407

  •  16-10-2019
  •  | 
  •  

Domanda

Ho un set di dati dei dati delle transazioni per un punto vendita. Sto usando i panda e voglio analizzare le entrate per giorno della settimana, ma ci sono giorni diseguali nel set di dati (vale a dire un fine settimana extra). Ho usato df.dt.dayofweek per creare un valore intero per il giorno della settimana, e raggruppati i dati da quel valore intero utilizzando df.groupby(["Day_int",]).sum()

Così ho una colonna 'totale' alla fine che mi interessa, ma voglio creare aa nuova colonna, qualcosa come 'adj_total' che si applica un'operazione di divisione di / 3 per i giorni dal lunedì al Venerdì e / 4 per i giorni sabato e domenica. È il modo migliore per scorrere la dataframe o è meglio

Ecco l'df che sto lavorando con (la maggior parte dei valori della colonna sono senza senso, solo totale è di interesse). Day_int è la variabile group_by e dovrebbe apparire inferiore alle altre colonne.

Day_int Section Prod_name Cashier Date Time Receipt Total
0 ..................................................91341
1 ..................................................82262
2 ..................................................84145
3 ..................................................90115
4 ..................................................115497
5 ..................................................151971
6 ..................................................109210
È stato utile?

Soluzione

I would add a column that is a 3 if it's a weekday and a 4 if it's not using an apply, something like this:

df['divide_by'] = df.apply(lambda x: 3 if x['Day_int']<5 else 4, axis=1)

Assuming days are Monday 0 to Sunday 6. Then you can add the column as follows:

df['adj_total'] = df.apply(lambda x: x['Total']/x['divide_by'], axis=1)

Then you can remove the divide_by column and you have the result

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top