Quando há um DataFrame como o seguinte:
import pandas as pd
df = pd.DataFrame([1, 1, 1, 1, 1], index=[100, 29, 234, 1, 150], columns=['A'])
Como posso classificar esse dataframe por índice com cada combinação de índice e valor de coluna intacta?
Quando há um DataFrame como o seguinte:
import pandas as pd
df = pd.DataFrame([1, 1, 1, 1, 1], index=[100, 29, 234, 1, 150], columns=['A'])
Como posso classificar esse dataframe por índice com cada combinação de índice e valor de coluna intacta?
Respostas:
Dataframes têm um sort_indexmétodo que retorna uma cópia por padrão. Passe inplace=Truepara operar no local.
import pandas as pd
df = pd.DataFrame([1, 2, 3, 4, 5], index=[100, 29, 234, 1, 150], columns=['A'])
df.sort_index(inplace=True)
print(df.to_string())
Dá-me:
A
1 4
29 2
100 1
150 5
234 3
Um pouco mais compacto:
df = pd.DataFrame([1, 2, 3, 4, 5], index=[100, 29, 234, 1, 150], columns=['A'])
df = df.sort_index()
print(df)
Nota:
sortfoi descontinuado, substituído por sort_indexpara este cenárioinplace, pois geralmente é mais difícil de ler e impede o encadeamento. Veja a explicação na resposta aqui:
Pandas: queda de desempenho peculiar para renomear no local após dropna.sort(), desde então, está obsoleto. A substituição seria .sort_index()como Paul H usa em sua resposta, caso em que a única diferença entre nossas respostas é eu não uso inplace=True.
.sort()docstring dizDEPRECATED: use DataFrame.sort_values()