Función Pandas df.rename()
df.rename()Es la función en Pandas que se utiliza para renombrar los nombres de columnas o índices de un DataFrame.
En el análisis de datos, unos nombres de columnas e índices claros son muy importantes para la legibilidad y el mantenimiento del código.rename()Permite modificar de forma flexible los nombres de columnas e índices, haciendo que los datos sean más estandarizados y fáciles de entender. Esto es especialmente útil en la importación de datos, la limpieza y la generación de informes.
Sintaxis básica y parámetros
rename()Es una función miembro de DataFrame, mediante el operador punto.para invocarla.
Formato de sintaxis
DataFrame.rename(mapper=None, index=None, columns=None, axis=None, inplace=False, errors='ignore')
Descripción de parámetros
| Parámetro | Tipo | Obligatorio | Descripción | Valor predeterminado |
|---|---|---|---|---|
| mapper | dict o función | Opcional | Regla de mapeo para renombrar ejes (índices de filas o nombres de columnas). Puede ser un dict o una función. Se utiliza junto conaxisel parámetro. |
None |
| index | dict o función | Opcional | Especifica directamente la regla de renombrado para los índices de fila. Tiene prioridad sobremapperyaxis。 |
None |
| columns | dict o función | Opcional | Especifica directamente la regla de renombrado para los nombres de columnas. Tiene prioridad sobremapperyaxis。 |
None |
| axis | int o str | Opcional | Especifica el eje que se va a renombrar.0o'index'Indica el índice de filas;1o'columns'Indica los nombres de columnas. |
None |
| inplace | bool | Opcional | Si esTrue, modifica directamente el DataFrame original, no devuelve un nuevo objeto; si esFalse, devuelve un nuevo DataFrame, los datos originales no cambian. |
False |
| errors | str | Opcional | Controla el manejo de errores.'raise'Indica que se lanza una excepción cuando no se encuentra la clave correspondiente;'ignore'Indica que se ignoran las claves inexistentes. |
'ignore' |
Descripción del valor de retorno
- Devuelve un nuevo DataFrame (si
inplace=False), oNone(siinplace=True)。 - en el DataFrame devuelto, los nombres de columnas o índices han sido renombrados.
Ejemplos
A través de una serie de ejemplos, dominaremos por completorename()el uso de.
Ejemplo 1: Renombrar nombres de columnas
Usandocolumnsel parámetro se pueden renombrar fácilmente los nombres de columnas.
Ejemplo
# Crear un DataFrame
data = {
'name': ['Zhang San', 'Li Si', 'Wang Wu'],
'age': [25, 30, 35],
'salary': [5000, 6000, 7000]
}
df = pd.DataFrame(data)
print("datos originales:")
print(df)
print("=" * 50)
# Renombrar nombres de columnas usando un diccionario
df_renamed = df.rename(columns={
'name': 'Nombre',
'age': 'Edad',
'salary': 'Salario'
})
print("Datos después de renombrar las columnas:")
print(df_renamed)
Resultado esperado:
原始数据:
name age salary
0 张三 25 5000
1 李四 30 6000
2 王五 35 7000
==================================================
重命名列名后的数据:
姓名 年龄 薪资
0 张三 25 5000
1 李四 30 6000
2 王五 35 7000
Análisis del código:
- Los nombres de columnas de los datos originales están en inglés; usamos un diccionario para renombrarlos al chino.
- Usando
columnsel parámetro solo afecta a los nombres de columnas, no a los índices de filas. - Esta es una operación común de normalización de datos.
Ejemplo 2: Renombrar índices de filas
Usandoindexel parámetro se pueden renombrar los índices de filas.
Ejemplo
# Crear un DataFrame, usando el índice predeterminado
data = {
'Fruta': ['Manzana', 'Plátano', 'Naranja'],
'Cantidad': [10, 20, 15]
}
df = pd.DataFrame(data)
print("Datos originales (índice predeterminado):")
print(df)
print("=" * 50)
# Usar un diccionario para renombrar el índice de filas
df_renamed = df.rename(index={
0: 'Primera fila',
1: 'Segunda fila',
2: 'Tercera fila'
})
print("Datos después de renombrar el índice de filas:")
print(df_renamed)
Resultado esperado:
原始数据(默认索引):
水果 数量
0 苹果 10
1 香蕉 20
2 橙子 15
==================================================
重命名行索引后的数据:
水果 数量
第一行 苹果 10
第二行 香蕉 20
第三行 橙子 15
Análisis del código:
- Los índices de fila de los datos originales son números como 0, 1, 2.
- Usando
indexel parámetro se pueden renombrar a nombres más significativos. - Esto es especialmente útil al generar informes.
Ejemplo 3: Renombrar simultáneamente nombres de columnas e índices de filas
Se pueden renombrar de una sola vez los nombres de columnas y los índices de filas.
Ejemplo
# Crear un DataFrame
data = {
'A': [1, 2, 3],
'B': [4, 5, 6]
}
df = pd.DataFrame(data, index=['x', 'y', 'z'])
print("datos originales:")
print(df)
print("=" * 50)
# Renombrar simultáneamente los nombres de columnas e índices de filas
df_renamed = df.rename(columns={'A': 'Columna A', 'B': 'Columna B'}, index={'x': 'Fila X', 'y': 'Fila Y', 'z': 'Fila Z'})
print("Datos renombrados:")
print(df_renamed)
Resultado esperado:
原始数据:
A B
x 1 4
y 2 5
z 3 6
==================================================
重命名后的数据:
列A 列B
行X 1 4
行Y 2 5
行Z 3 6
Análisis del código:
- Se pueden usar simultáneamente
columnsyindexlos parámetros. - Esto es muy conveniente al importar y estandarizar datos.
Ejemplo 4: Usar una función para renombrar
rename()También acepta funciones como parámetro, lo que permite realizar conversiones por lotes en nombres de columnas o índices.
Ejemplo
# Crear un DataFrame con nombres de columnas más complejos
data = {
'USER_NAME': ['Zhang San', 'Li Si'],
'USER_AGE': [25, 30],
'USER_SALARY': [5000, 6000]
}
df = pd.DataFrame(data)
print("datos originales:")
print(df)
print("=" * 50)
# Convertir los nombres de columnas a minúsculas usando una función
df_lower = df.rename(columns=str.lower)
print(Nombres de columnas en minúsculas:)
print(df_lower)
print("=" * 50)
# Usar una función para eliminar el prefijo (como USER_)
df_clean = df.rename(columns=lambda x: x.replace('USER_', ''))
print(Después de eliminar el prefijo:)
print(df_clean)
print("=" * 50)
# Agregar prefijo usando función
df_prefix = df.rename(columns=lambda x: 'col_' + x)
print(Después de añadir el prefijo:)
print(df_prefix)
Resultado esperado:
原始数据: USER_NAME USER_AGE USER_SALARY 0 张三 25 5000 1 李四 30 6000 列名转小写后: user_name user_age user_salary 0 张三 25 数据清洗 1 李四 30 6000 ================================================== 去除前缀后: NAME AGE SALARY 0 张三 25 5000 1 李四 30 6000
Análisis del código:
str.lowerEs el método para convertir una cadena a minúsculas.- Usando
lambdafunciones se pueden manejar de forma flexible reglas de nomenclatura complejas. - Este método es adecuado para procesar por lotes una gran cantidad de nombres de columnas.
Ejemplo 5: Usar el parámetro inplace para modificar en el lugar
Usandoinplace=Truese puede modificar directamente el DataFrame original, sin devolver un nuevo objeto.
Ejemplo
# Crear un DataFrame
data = {
'name': ['Zhang San', 'Li Si'],
'age': [25, 30]
}
df = pd.DataFrame(data)
print("datos originales:")
print(df)
print(f"Datos originales id: {id(df)}")
print("=" * 50)
# Usar inplace=True para modificar en el lugar
df.rename(columns={'name': 'Nombre', 'age': 'Edad'}, inplace=True)
print("Datos después de modificar con inplace=True:")
print(df)
print(fDatos modificados id: {id(df)})
Resultado esperado:
原始数据:
name age
0 张三 25
1 李四 30
原始数据 id: 140234567890
==================================================
使用 inplace=True 修改后的数据:
姓名 年龄
0 张三 25
1 李四 30
修改后数据 id: 140234567890 # 同一个对象
Análisis del código:
- Usando
inplace=Truedespués, la dirección de memoria (id) del DataFrame no cambia, lo que indica que es una modificación en el lugar. - Este método puede ahorrar memoria, especialmente al trabajar con conjuntos de datos grandes.
Ejemplo 6: Manejar nombres de columnas inexistentes
Usandoerrorsel parámetro se puede controlar el comportamiento cuando un nombre de columna no existe.
Ejemplo
# Crear un DataFrame
data = {
'A': [1, 2, 3],
'B': [4, 5, 6]
}
df = pd.DataFrame(data)
print("datos originales:")
print(df)
print("=" * 50)
# Intenta renombrar una columna inexistente, usando errors='ignore' (por defecto)
df_renamed = df.rename(columns={'C': 'C_new'}) # La columna C no existe
print(Renombrar una columna inexistente (C), usando el comportamiento predeterminado:)
print(df_renamed) # No habrá ningún cambio
print("=" * 50)
# Intenta renombrar una columna inexistente, usando errors='raise'
try:
df_renamed2 = df.rename(columns={'C': 'C_new'}, errors='raise')
except KeyError as e:
print(f"Excepción lanzada: {e}")
Resultado esperado:
原始数据: A B 0 1 4 1 2 5 2 3 6 ================================================== 重命名不存在的列(C),使用默认行为: A B 0 1 4 1 2 5 2 3 6 # 无变化 ==================================================errors ================================================== 抛出异常: 'C'
Análisis del código:
- Por defecto (
errors='ignore'), si la columna no existe, no habrá ningún cambio ni se reportará un error. - Si se establece
errors='raise', se lanzará unaKeyErrorexcepción.
Ejemplo 7: Usar el parámetro axis
UsoaxisEl parámetro permite especificar de forma más flexible el eje a renombrar.
Ejemplo
# Crear un DataFrame
data = {
'col1': [1, 2, 3],
'col2': [4, 5, 6]
}
df = pd.DataFrame(data, index=['row1', 'row2', 'row3'])
print("Datos originales:")
print(df)
print("=" * 50)
# Usar axis='columns' para renombrar columnas
df_renamed_cols = df.rename({'col1': 'Primera columna', 'col2': 'Segunda columna'}, axis='columns')
print("Después de usar axis='columns' para renombrar columnas:")
print(df_renamed_cols)
print("=" * 50)
# Usar axis='index' para renombrar los índices de fila
df_renamed_idx = df.rename({'row1': 'Primera fila', 'row2': 'Segunda fila', 'row3': 'Tercera fila'}, axis='index')
print("Después de renombrar filas con axis='index':")
print(df_renamed_idx)
Resultado esperado:
原始数据:
col1 col2
row1 1 4
row2 2 5
row3 3 6
==================================================
使用 axis='columns' 重命名列后:
第一列 第二列
row1 1 4
row2 2 5
row3 3 6
Análisis del código:
axis='columns'oaxis=1Representa operar sobre las columnas.axis='index'oaxis=0Representa operar sobre los índices de las filas.- Esta sintaxis es consistente con el estilo de NumPy.
rename()Por defecto, no se modifica el DataFrame original; si desea modificarlo en el lugar, utiliceinplace=Trueel parámetro.- Utilice preferentemente
columnsyindexel parámetro, en lugar demapperyaxis, porque el primero es más claro y fácil de entender. - Al usar una función para renombrar, asegúrese de que la función devuelva un tipo cadena (string); de lo contrario, pueden producirse errores.
- Al procesar conjuntos de datos grandes, el uso de
inplace=Truepuede ahorrar memoria. - Antes de renombrar, se recomienda revisar los nombres de columna actuales; puede usar
df.columnspara verlos.
Notas
Otras extensiones
Funciones comunes de Pandas