Supponiamo di avere un frame dati con colonne a b & c, voglio ordinare i dati-Frame per colonna b in ascendente, e per colonna c in discendente, come posso fare?Come ordinare un dataFrame in panda python da due o più colonne?
risposta
A partire dalla versione 0.17.0, il metodo sort
è stato ritirato a favore di sort_values
. sort
è stato completamente rimosso nella versione 0.20.0. Gli argomenti (e risultati) rimangono gli stessi:
df.sort_values(['a', 'b'], ascending=[True, False])
È possibile utilizzare l'argomento ascendente di sort
:
df.sort(['a', 'b'], ascending=[True, False])
Ad esempio:
In [11]: df1 = pd.DataFrame(np.random.randint(1, 5, (10,2)), columns=['a','b'])
In [12]: df1.sort(['a', 'b'], ascending=[True, False])
Out[12]:
a b
2 1 4
7 1 3
1 1 2
3 1 2
4 3 2
6 4 4
0 4 3
9 4 3
5 4 1
8 4 1
Come commentato da @renadeen
Sort isn't in place by default! So you should assign result of the sort method to a variable or add inplace=True to method call.
che è, se si vuole riutilizzare df1 come dataframe ordinato:
df1 = df1.sort(['a', 'b'], ascending=[True, False])
o
df1.sort(['a', 'b'], ascending=[True, False], inplace=True)
'pd.DataFrame (randint (1, 5, (10,2)), columns = ['a', 'b'])' non sembra funzionare .... 'TypeError: randint() prende esattamente 3 argomenti (4 dati) ' – user1234440
@ user1234440 ah, questa è la funzione randint di numpy (piuttosto che casuale), lo renderò più chiaro, mi dispiace! cioè era 'da numpy.random import randint' e ** not **' da random import randint', l'ho modificato per usare np per essere più esplicito. –
L'ordinamento non è presente per impostazione predefinita! Quindi dovresti assegnare un risultato del metodo 'sort' a una variabile o aggiungere' inplace = True' alla chiamata al metodo. – renadeen
Come di panda 0.17.0, DataFrame.sort()
è obsoleto e impostare essere rimosso in una versione futura di panda. Il modo per ordinare un dataframe dai suoi valori è ora è DataFrame.sort_values
Come tale, la risposta alla tua domanda ora sarebbe
df.sort_values(['b', 'c'], ascending=[True, False], inplace=True)
vedere https://github.com/pydata/pandas/pull/10726 per la discussione di questo cambiamento. –
- 1. Panda Python: sostituire i valori più colonne corrispondenti a più colonne da un altro dataframe
- 2. Creare un DataFrame panda da più dicts
- 3. Panda: aggiungere più colonne vuote a DataFrame
- 4. Da tuple a più colonne in panda
- 5. Come posso "annullare" le colonne specifiche da un DataFrame panda?
- 6. binning un dataframe in panda in Python
- 7. Panda Python Come selezionare le righe con uno o più null da un DataFrame senza elencare le colonne esplicitamente?
- 8. come ordinare i panda dataframe da una colonna
- 9. L'unione di due dataframe panda genera colonne "duplicate"
- 10. Come rimuovere le colonne duplicate da un dataframe usando i panda python
- 11. Python: ottenere un conteggio di frequenza basato su due colonne (variabili) in dataframe panda
- 12. pandi: combinare due colonne in un dataframe
- 13. Restituisce più colonne da applicare i panda
- 14. selezionando tra più colonne con i panda Python?
- 15. Come rimuovere un dataframe panda da un altro dataframe
- 16. Panda che selezionano colonne discontinue da un dataframe
- 17. Panda: ordinare le colonne per il loro valore medio
- 18. Il modo più veloce per ordinare ogni riga in un dataframe panda
- 19. panda raggruppa due colonne e moltiplica altre due colonne
- 20. Python: limita la larghezza delle colonne stampate dei panda DataFrame
- 21. Come escludere più colonne in Spark dataframe in Python
- 22. I panda Python uniscono solo determinate colonne
- 23. indice invertito e colonne in un dataframe panda
- 24. Mutare più colonne in un dataframe
- 25. panda: normalizzare un DataFrame
- 26. aggiungi un campo in dataframe panda con colonne MultiIndex
- 27. Come ruotare un dataframe in Panda?
- 28. Rimuovere le colonne NULL in un dataframe Panda?
- 29. Come aggiungere colonne selezionate a dataframe panda da df con colonne diverse
- 30. Voglio moltiplicare due colonne in un DataFrame panda e aggiungere il risultato in una nuova colonna
controllo questa risposta http://stackoverflow.com/a/14946246/1948860 – richie