Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Problema ao tentar incluir 'Dist_Metro

Boa tarde!

Ao executar o seguinte código:

geo_dados['Dist_metro'] = geo_dados['geometry'].apply(lambda x: metro.distance(x).min())

Uma mensagem de aviso é exibida:

"/usr/local/lib/python3.10/dist-packages/geopandas/geodataframe.py:1538: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  super().__setitem__(key, value)"

Gostaria de saber se há um código mais atualizado para tentar realizar a inserção da nova coluna no Geodataframe.

Desde já agradeço!

2 respostas
solução!

Olá, Bianca, tudo bem?

Na verdade, a mensagem não se trata de um erro e sim de um aviso, você recebeu um SettingWithCopyWarning. Esse aviso geralmente ocorre quando o pandas não tem certeza se o objeto que você está modificando é uma cópia ou uma visão do DataFrame original, o que pode gerar problemas.

Para evitar isso, você pode utilizar o método .loc[] para fazer a atribuição diretamente no DataFrame original. Ficaria assim:

geo_dados.loc[:, 'Dist_metro'] = geo_dados['geometry'].apply(lambda x: metro.distance(x).min())

Neste código, .loc[:, 'Dist_metro'] está especificando que queremos adicionar ou modificar a coluna 'Dist_metro' em todas as linhas (: significa todas as linhas) do GeoDataFrame 'geo_dados'. O uso de .loc assegura que a operação é realizada diretamente no DataFrame original, evitando assim o aviso de SettingWithCopyWarning.

Espero que essa modificação resolva o problema.

Qualquer dúvida, compartilhe no fórum.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Obrigada, Monalisa!