Ho un frame di dati e vorrei raggrupparlo per una colonna particolare (o, in altre parole, per i valori di una particolare colonna). Posso farlo nel modo seguente: grouped = df.groupby(['ColumnName'])
.Come applicare le funzioni "primo" e "ultimo" alle colonne mentre si utilizza il raggruppamento per in panda?
Immagino il risultato di questa operazione come una tabella in cui alcune celle possono contenere set di valori anziché singoli valori. Per ottenere una tabella usuale (ad esempio una tabella in cui ogni cella contiene solo un singolo valore), è necessario indicare quale funzione si desidera utilizzare per trasformare gli insiemi di valori nelle celle in valori singoli.
Ad esempio, è possibile sostituire insiemi di valori in base alla loro somma o al loro valore minimo o massimo. Posso farlo nel modo seguente: grouped.sum()
o grouped.min()
e così via.
Ora voglio utilizzare diverse funzioni per colonne diverse. Ho capito che posso farlo nel modo seguente: grouped.agg({'ColumnName1':sum, 'ColumnName2':min})
.
Tuttavia, a causa di alcuni motivi, non è possibile utilizzare first
. In ulteriori dettagli, grouped.first()
funziona, ma grouped.agg({'ColumnName1':first, 'ColumnName2':first})
non funziona. Di conseguenza ottengo un NameError: NameError: name 'first' is not defined
. Quindi, la mia domanda è: perché succede e come risolvere questo problema.
AGGIUNTO
Here ho trovato il seguente esempio:
grouped['D'].agg({'result1' : np.sum, 'result2' : np.mean})
Può essere Ho anche bisogno di usare np
? Ma nel mio caso python non riconosce "np". Dovrei importarlo?
Non è necessario 'np', funzionerà con semplice' somma' (solo in modo meno efficiente). numpy viene importato con i panda (se si importa 'panda come pd' è 'pd.np') ma la maggior parte delle persone lo importerà anche separatamente per comodità. –