Estaba buscando una forma elegante de cambiar el nombre de una columna especificada en a DataFrame
.
reproducir datos ...
import pandas as pd
d = {
'one': [1, 2, 3, 4, 5],
'two': [9, 8, 7, 6, 5],
'three': ['a', 'b', 'c', 'd', 'e']
}
df = pd.DataFrame(d)
La solución más elegante que he encontrado hasta ahora ...
names = df.columns.tolist()
names[names.index('two')] = 'new_name'
df.columns = names
Esperaba una frase simple ... este intento falló ...
df.columns[df.columns.tolist().index('one')] = 'another_name'
Cualquier pista recibida con gratitud.
Como el
inplace
argumento está disponible, no necesita copiar y asignar el marco de datos original a sí mismo, sino hacer lo siguiente:fuente
¿Qué pasa?
fuente
df['new_name']
(y otras cosas pandas) después de cambiar las variables como se describe anteriormente. Su comentario puede haber sido válido cuando se publicó originalmente.rename
métodos es una mejor solución.Pandas 0.21 ahora tiene un parámetro de eje
El método de cambio de nombre ha ganado un parámetro de eje para que coincida con la mayoría del resto de la API de pandas.
Entonces, además de esto:
Tu puedes hacer:
o
fuente
pd.__version__
para verificar su versiónSi sabe qué columna # es (primero / segundo / enésimo), esta solución publicada en una pregunta similar funciona independientemente de si está nombrada o no, y en una línea: https://stackoverflow.com/a/26336314/ 4355695
fuente
Para cambiar el nombre de las columnas aquí es simple, que funcionará tanto para
Default(0,1,2,etc;)
las columnas existentes como para las existentes, pero no es muy útil para un conjunto de datos más grande (que tiene muchas columnas).Para un conjunto de datos más grande, podemos dividir las columnas que necesitamos y aplicar el siguiente código:
fuente
El siguiente código corto puede ayudar:
Eliminar espacios de columnas.
fuente
AttributeError: 'int' object has no attribute 'replace'
podrías ampliar eso?pandas versión 0.23.4
Para el registro:
fuente
Otra opción sería simplemente copiar y soltar la columna:
Después de eso obtienes el resultado:
fuente