sort - ordenar lista python
El objeto ''DataFrame'' no tiene el atributo ''sort'' (2)
Me enfrento a un problema aquí, en mi paquete de Python tengo la instalación numpy, pero todavía tengo este error ''El objeto'' DataFrame ''no tiene el atributo'' sort ''
Cualquiera me puede dar una idea ...
Este es mi código:
final.loc[-1] =['''', ''P'',''Actual'']
final.index = final.index + 1 # shifting index
final = final.sort()
final.columns=[final.columns,final.iloc[0]]
final = final.iloc[1:].reset_index(drop=True)
final.columns.names = (None, None)
Pandas Clasificación 101
sort
ha sido reemplazado en v0.20 por
DataFrame.sort_values
y
DataFrame.sort_index
.
Aparte de esto, también tenemos
argsort
.
Aquí hay algunos casos de uso comunes en la clasificación, y cómo resolverlos usando las funciones de clasificación en la API actual. Primero, la configuración.
# Setup
np.random.seed(0)
df = pd.DataFrame({''A'': list(''accab''), ''B'': np.random.choice(10, 5)})
df
A B
0 a 7
1 c 9
2 c 3
3 a 5
4 b 2
Ordenar por columna individual
Por ejemplo, para ordenar
df
por la columna "A", use
sort_values
con un solo nombre de columna:
df.sort_values(by=''A'')
A B
0 a 7
3 a 5
4 b 2
1 c 9
2 c 3
Si necesita un RangeIndex nuevo, use
DataFrame.reset_index
.
Ordenar por múltiples columnas
Por ejemplo, para ordenar por col "A" y "B" en
df
, puede pasar una lista a
sort_values
:
df.sort_values(by=[''A'', ''B''])
A B
3 a 5
0 a 7
4 b 2
2 c 3
1 c 9
Ordenar por índice de marco de datos
df2 = df.sample(frac=1)
df2
A B
1 c 9
0 a 7
2 c 3
3 a 5
4 b 2
Puede hacer esto usando
sort_index
:
df2.sort_index()
A B
0 a 7
1 c 9
2 c 3
3 a 5
4 b 2
df.equals(df2)
# False
df.equals(df2.sort_index())
# True
Aquí hay algunos métodos comparables con su rendimiento:
%timeit df2.sort_index()
%timeit df2.iloc[df2.index.argsort()]
%timeit df2.reindex(np.sort(df2.index))
605 µs ± 13.6 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
610 µs ± 24.2 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
581 µs ± 7.63 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
Ordenar por lista de índices
Por ejemplo,
idx = df2.index.argsort()
idx
# array([0, 7, 2, 3, 9, 4, 5, 6, 8, 1])
Este problema de "clasificación" es en realidad un simple problema de indexación.
Simplemente pasar etiquetas enteras a
iloc
servirá.
df.iloc[idx]
A B
1 c 9
0 a 7
2 c 3
3 a 5
4 b 2
sort()
fue obsoleto para DataFrames a favor de:
-
sort_values()
para ordenar por columna (s) -
sort_index()
para ordenar por el índice
sort()
quedó en desuso (pero aún está disponible) en Pandas con la versión 0.17 (2015-10-09) con la introducción de
sort_values()
y
sort_index()
.
Fue eliminado de Pandas con la versión 0.20 (2017-05-05).