1
resposta

Erro ao tentar mudar os nomes da coluna

Bom dia!! Tudo Bem ? Quando executo o código para fazer a mudança das colunas, é exibido o seguinte erro:

AnalysisException                         Traceback (most recent call last)
<ipython-input-42-97dcc0f7a00f> in <module>
     14         f.col('CartaoCredito').alias('MetodoPagamento_CartaoCredito'),
     15         f.col('BoletoEletronico').alias('MetodoPagamento_BoletoEletronico'),
---> 16         f.col('Boleto').alias('MetodoPagamento_Boleto')
     17     ).drop(
     18         'Internet', 'TipoContrato', 'MetodoPagamento', 'DSL',

C:\Spark\spark-3.2.4-bin-hadoop2.7\python\pyspark\sql\dataframe.py in select(self, *cols)
   1683         [Row(name='Alice', age=12), Row(name='Bob', age=15)]
   1684         """
-> 1685         jdf = self._jdf.select(self._jcols(*cols))
   1686         return DataFrame(jdf, self.sql_ctx)
   1687 

C:\Spark\spark-3.2.4-bin-hadoop2.7\python\lib\py4j-0.10.9.5-src.zip\py4j\java_gateway.py in __call__(self, *args)
   1320         answer = self.gateway_client.send_command(command)
   1321         return_value = get_return_value(
-> 1322             answer, self.gateway_client, self.target_id, self.name)
   1323 
   1324         for temp_arg in temp_args:

C:\Spark\spark-3.2.4-bin-hadoop2.7\python\pyspark\sql\utils.py in deco(*a, **kw)
    115                 # Hide where the exception came from that shows a non-Pythonic
    116                 # JVM exception message.
--> 117                 raise converted from None
    118             else:
    119                 raise

AnalysisException: Reference 'Mensalmente' is ambiguous, could be: Mensalmente, Mensalmente.

Ja tentei refazer de várias formas, porém, sem sucesso.

1 resposta

Oi Gustavo, tudo bem?

Pelo erro apresentado, parece que você está tentando renomear uma coluna para "Mensalmente", mas existe mais de uma coluna com esse nome no seu DataFrame, o que está causando a ambiguidade.

Para resolver a ambiguidade no nome 'Mensalmente', você pode usar o alias com um nome de coluna exclusivo, como feito na aula, verifique por favor se você fez essas alterações:


.select(
        '*',
        f.col('DSL').alias('Internet_DSL'), 
        f.col('FibraOptica').alias('Internet_FibraOptica'), 
        f.col('Nao').alias('Internet_Nao'), 
        f.col('Mensalmente').alias('TipoContrato_Mensalmente'), 
        f.col('UmAno').alias('TipoContrato_UmAno'), 
        f.col('DoisAnos').alias('TipoContrato_DoisAnos'), 
        f.col('DebitoEmConta').alias('MetodoPagamento_DebitoEmConta'), 
        f.col('CartaoCredito').alias('MetodoPagamento_CartaoCredito'), 
        f.col('BoletoEletronico').alias('MetodoPagamento_BoletoEletronico'), 
        f.col('Boleto').alias('MetodoPagamento_Boleto')        
    )

Como você abriu um tópico fora das aulas, não sei em qual aula você está, mas você pode rever essa aula aqui para entender bem como a pessoa instrutora fez.

Um abraço e bons estudos.