Come implementare conteggi accurati o somme quando si dispone di un diverso numero di giorni della settimana?
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
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