Saltar al contenido

Cambiar dinámicamente el nombre de varias columnas en PySpark DataFrame

Esta es la contestación más válida que te podemos brindar, pero mírala pausadamente y valora si se adapta a tu trabajo.

Solución:

Puede usar algo similar a esta gran solución de @ zero323:

df.toDF(*(c.replace('.', '_') for c in df.columns))

alternativamente:

from pyspark.sql.functions import col

replacements = c:c.replace('.','_') for c in df.columns if '.' in c

df.select([col(c).alias(replacements.get(c, c)) for c in df.columns])

los replacement diccionario entonces se vería así:

'emp.city': 'emp_city', 'emp.dno': 'emp_dno', 'emp.sal': 'emp_sal'

ACTUALIZAR:

si tengo un marco de datos con espacio en los nombres de las columnas también, ¿cómo reemplazo ambos? '.' y espacio con '_'

import re

df.toDF(*(re.sub(r'[.s]+', '_', c) for c in df.columns))

Escribió una función fácil y rápida para que la use. ¡Disfrutar! 🙂

def rename_cols(rename_df):
    for column in rename_df.columns:
        new_column = column.replace('.','_')
        rename_df = rename_df.withColumnRenamed(column, new_column)
    return rename_df

Si posees alguna desconfianza o disposición de ascender nuestro post te inspiramos escribir un exégesis y con mucho placer lo leeremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *