Suponha que eu tenho uma trama de dados com colunas a
, b
e c
, eu quero classificar a trama de dados por coluna b
em ordem crescente, e por coluna c
em ordem decrescente, como posso fazer isso?
python
pandas
python-2.7
sorting
data-analysis
Rakesh Adhikesavan
fonte
fonte
Respostas:
A partir da versão 0.17.0, o
sort
método foi preterido a favor desort_values
.sort
foi completamente removido na versão 0.20.0. Os argumentos (e resultados) permanecem os mesmos:Você pode usar o argumento crescente de
sort
:Por exemplo:
Como comentado por @renadeen
ou seja, se você deseja reutilizar o df1 como um DataFrame classificado:
ou
fonte
sort
método a uma variável ou adicionarinplace=True
à chamada do método.A partir do pandas 0.17.0,
DataFrame.sort()
foi preterido e configurado para ser removido em uma versão futura do pandas. A maneira de classificar um quadro de dados por seus valores agora éDataFrame.sort_values
Como tal, a resposta para sua pergunta agora seria
fonte
Para quadros de dados grandes de dados numéricos, você pode ver uma melhoria significativa no desempenho
numpy.lexsort
, que executa uma classificação indireta usando uma sequência de chaves:Uma peculiaridade é que a ordem de classificação definida com
numpy.lexsort
é invertida:(-'b', 'a')
classificaa
primeiro as séries . Negamos sériesb
para refletir que queremos essas séries em ordem decrescente.Esteja ciente de que
np.lexsort
apenas classifica com valores numéricos, enquantopd.DataFrame.sort_values
trabalha com string ou valores numéricos. Usandonp.lexsort
com cordas dará:TypeError: bad operand type for unary -: 'str'
.fonte