Sto utilizzando groupby
su un dataframe panda per eliminare tutte le righe che non hanno il minimo di una colonna specifica. Qualcosa del genere:Mantiene altre colonne quando si utilizza min() con groupby
df1 = df.groupby("item", as_index=False)["diff"].min()
Tuttavia, se ho più di quelle due colonne, le altre colonne vengono rilasciate. Posso mantenere quelle colonne usando groupby, o dovrò trovare un modo diverso di eliminare le righe?
miei dati assomiglia:
item diff otherstuff
0 1 2 1
1 1 1 2
2 1 3 7
3 2 -1 0
4 2 1 3
5 2 4 9
6 2 -6 2
7 3 0 0
8 3 2 9
e dovrebbe finire come:
item diff otherstuff
0 1 1 2
1 2 -6 2
2 3 0 0
ma quello che sto ricevendo è:
item diff
0 1 1
1 2 -6
2 3 0
ho cercato attraverso la documentazione e non riesce a trovare nulla. Ho provato:
df1 = df.groupby(["item", "otherstuff"], as_index=false)["diff"].min()
df1 = df.groupby("item", as_index=false)["diff"].min()["otherstuff"]
df1 = df.groupby("item", as_index=false)["otherstuff", "diff"].min()
Ma nessuno di questi lavori (realizzato con l'ultimo che la sintassi è destinata all'aggregazione dopo la creazione di un gruppo).
Il primo restituisce tutto 'NaN', ma il secondo metodo funziona. Grazie! – PointXIV
Grazie per aver fornito due modi per farlo. Ho trovato più istanze che uno funziona quando l'altro non lo fa e viceversa. Sembra che dipenda se i tuoi elementi sono numerici o meno. Buono ad averli entrambi – sfortney
.sort_values invece al giorno d'oggi ... giusto? –