1
resposta

Nomeando apenas a primeira coluna

Olá,

Fiz o exercício que o professor passou, mas está renomeando apenas a primeira coluna, tanto para estabelecimentos quanto para sócios. Alguém poderia me ajudar?

for index, colName in enumerate(estabsColNames):
  estabelecimentos = estabelecimentos.withColumnRenamed(f"_c{index}", colName)

estabelecimentos.columns
for index, colName in enumerate(sociosColNames):
  socios = socios.withColumnRenamed(f"_c{index}", colName)

socios.columns
1 resposta

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 DataFramescom 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!