¿Hay alguna forma de reordenar las columnas en el marco de datos de pandas en función de mis preferencias personales (es decir, no ordenadas alfabéticamente o numéricamente, sino más bien siguiendo ciertas convenciones)?
Ejemplo simple:
frame = pd.DataFrame({
'one thing':[1,2,3,4],
'second thing':[0.1,0.2,1,2],
'other thing':['a','e','i','o']})
produce esto:
one thing other thing second thing
0 1 a 0.1
1 2 e 0.2
2 3 i 1.0
3 4 o 2.0
Pero en cambio, me gustaría esto:
one thing second thing other thing
0 1 0.1 a
1 2 0.2 e
2 3 1.0 i
3 4 2.0 o
(Por favor, proporcione una solución genérica en lugar de específica para este caso. Muchas gracias).
Puedes usar esto:
fuente
pandas
.pandas
v0.23`).Aquí hay una solución que uso con mucha frecuencia. Cuando tiene un gran conjunto de datos con toneladas de columnas, definitivamente no desea reorganizar manualmente todas las columnas.
Lo que puede y, muy probablemente, desea hacer es ordenar las primeras columnas que usa con frecuencia y dejar que todas las demás columnas sean ellas mismas. Este es un enfoque común en R.
df %>%select(one, two, three, everything())
Por lo tanto, primero puede escribir manualmente las columnas que desea ordenar y colocar antes de todas las demás columnas en una lista
cols_to_order
.Luego construye una lista para nuevas columnas combinando el resto de las columnas:
Después de esto, puede utilizar las
new_columns
otras soluciones sugeridas.fuente
También podrías hacer algo como
df = df[['x', 'y', 'a', 'b']]
Además, puede obtener la lista de columnas con:
La salida producirá algo como esto:
Que luego es fácil de reorganizar manualmente.
fuente
Constrúyelo con una lista en lugar de un diccionario.
fuente
También puede usar OrderedDict:
fuente
Agregue el parámetro 'columnas':
fuente
Intente indexar (por lo que desea una solución genérica no solo para esto, por lo que el orden de índice puede ser justo lo que desea):
Ahora:
Es:
fuente
Encuentro que esto es el más sencillo y funcional:
fuente