Oii, Rafael! Tudo bem?
Peço desculpas pela demora para te responder.
Considerando o contexto que relatou, isso acontece porque o método withColumnRenamed
retorna um novo DataFrame
com a coluna renomeada. No seu loop, está sobrescrevendo o DataFrame estabelecimentos
(ou 'socios') a cada iteração, mas sempre com base no DataFrame
original, e não no DataFrame
modificado na iteração anterior.
Entendido isso, apenas a primeira coluna é renomeada, pois nas iterações seguintes você está trabalhando sempre com o DataFrame
original.
Como sugestão, a solução para isso seria garantir que o DataFrame seja modificado a cada iteração.
Um exemplo seria:
for index, colName in enumerate(estabsColNames):
estabelecimentos = estabelecimentos.withColumnRenamed(f"_c{index}", colName)
for index, colName in enumerate(sociosColNames):
socios = socios.withColumnRenamed(f"_c{index}", colName)
No código acima, ele está renomeando as colunas em ambos DataFrames
com base nas listas estabsColNames
e sociosColNames
, de modo que as alterações de todas as iterações sejam preservadas.
Espero ter ajudado. Continue se dedicando aos estudos e qualquer dúvida, compartilhe no fórum.
Bons estudos, Rafael!