Ad esempio ho seguente tabella:Python panda - filtra righe dopo groupby
index,A,B
0,0,0
1,0,8
2,0,8
3,1,0
4,1,5
Dopo raggruppamento per A
:
0:
index,A,B
0,0,0
1,0,8
2,0,8
1:
index,A,B
3,1,5
4,1,3
Ciò che serve è far cadere righe di ogni gruppo, in cui il numero nella colonna B
è inferiore al valore massimo di tutte le righe dalla colonna del gruppo B
. Beh io ho un problema di traduzione e la formulazione di questo problema a Inglese ecco l'esempio:
massimo valore dalle righe nella colonna B
nel gruppo 0
:
quindi voglio far cadere fila con indice 0
e mantenere le righe con indici 1
e 2
valore massimo di righe nella colonna B
nel gruppo 1
:
quindi voglio goccia fila con indice 4
e tenere riga con indice 3
Ho provato ad utilizzare la funzione di filtro panda, ma il problema è che è operativo su tutte le righe gruppo contemporaneamente:
data = <example table>
grouped = data.groupby("A")
filtered = grouped.filter(lambda x: x["B"] == x["B"].max())
Quindi quello di cui ho idealmente bisogno è un filtro, che itera su tutte le righe del gruppo.
Grazie per l'aiuto!
P.S. C'è anche modo di cancellare solo le righe nei gruppi e non restituire l'oggetto DataFrame
?
l'ultimo bit è totalmente ambiguo: se stai cancellando le righe in ogni gruppo, ma * non * restituendo un dataframe, allora cosa vuoi restituire? –
I dati, quando si confronta la tabella completa con i gruppi, non corrispondono. per favore chiariscilo –
Scusa ero un po 'impegnato quando ho scritto questa domanda. I dati sono corretti ora. Insomma, voglio solo cancellare le righe dai gruppi e mantenere questi gruppi così come sono. Devo applicare diversi filtri e dopo ogni applicazione è necessario un nuovo groupby. – jirinovo