es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

PySpark: Iterar sobre una lista de dataframes

Tengo un par de dataframes y quiero que todas sus columnas estén en mayúsculas. Hice esto de la siguiente manera:

for col in df1.columns:
    df1 = df1.withColumnRenamed(col, col.upper())

for col in df2.columns:
    df2 = df2.withColumnRenamed(col, col.upper())

Ahora quiero hacer esto en una iteración de array como esta:

lista = (df1, df2, df3)
for x in lista:
   for col in x.columns:
      x = x.withColumnRenamed(col, col.upper())

Pero de alguna manera esto no funciona (pero no se muestra ningún error), las columnas siguen en minúsculas. También intenté adjuntar un “return x” al final, pero eso tampoco funciona. ¿Alguien puede ayudarme?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que podrías estar encontrando un problema donde los cambios que estás realizando en los dataframes dentro del bucle no se están reflejando fuera del bucle. Esto se debe a que la variable x se está asignando a un nuevo dataframe dentro del bucle, pero esto no está actualizando el dataframe original que estás tratando de modificar.

    Una solución potencial a este problema es crear una nueva lista para almacenar los dataframes modificados y luego asignar esta lista de nuevo a la variable original al final del bucle. Aquí te presentamos un ejemplo de implementación:

    df_list = [df1, df2, df3]
    new_df_list = []
    
    for df in df_list:
        for col in df.columns:
            df = df.withColumnRenamed(col, col.upper())
        new_df_list.append(df)
    
    # Asigna la lista de dataframes modificados a la variable original
    df_list = new_df_list
    

    Esto debería crear una nueva lista llamada new_df_list que contiene los dataframes modificados y luego asigna esta lista de nuevo a la variable original df_list al final del bucle. De esta manera, deberías ser capaz de acceder a los dataframes con nombres de columna en mayúsculas fuera del bucle.

    Ten en cuenta que generalmente no es una buena idea usar palabras clave reservadas como “list” como nombres de variable, ya que esto puede llevar a un comportamiento inesperado. En el ejemplo anterior, hemos cambiado el nombre de la variable a df_list para mayor claridad.

Comments are closed.