Para reproduzir a transformação ilustrada na figura abaixo,...
Comentários
Veja os comentários dos nossos alunos
Das funções listadas nas alternativas (join, union, sum, concat, merge), somente são válidas no Pandas:
- merge()
- concat()
Assim, já podemos eliminar as alternativas A,B, E e ficarmos somente com C ou D como resposta.
Porém, segundo a documentação, o merge() é para mesclar objetos DataFrame ou Series nomeados com uma junção no estilo de banco de dados. A junção é feita em colunas ou índices. Se forem unidas colunas sobre colunas, os índices do DataFrame serão ignorados . Caso contrário, se forem unidos índices sobre índices ou índices sobre uma ou mais colunas, o índice será passado adiante. Ao realizar uma mesclagem cruzada, não são permitidas especificações de coluna para mesclagem. Além disso para fazer uma chamada válida do método merge() é necessário fornecer mais parâmetros, pois se for chamado como exibido na alternativa D, receberemos o erro:
TypeError: merge() missing 1 required positional argument: 'right'
Assim descartamos esta alternativa D (merge) e concluímos, então, que somente é válida a alternativa C, referente ao método concat(); segue um código de teste.
import pandas as pd
df1 = pd.DataFrame({"CNES":[6624111,2001454,2000636],"CODUFMUN":[120040,120010,120030]})
df2 = pd.DataFrame({"CNES":[5414938,3704017,6091822],"CODUFMUN":[120020,120040,120040]}, index=[3,4,5])
df3 = pd.concat([df1,df2])
print(df3)
será exibido:
CNES CODUFMUN
0 6624111 120040
1 2001454 120010
2 2000636 120030
3 5414938 120020
4 3704017 120040
5 6091822 120040
c-
import pandas as pd
dataset = {"CNES": [6624111, 2001454, 2000636],
"codefun": [120040, 120010, 120030]
}
df1 = pd.DataFrame(dataset)
dataset1 = {"CNES": [1488, 13, 666],
"codefun": [1, 2, 187]
}
df2 = pd.DataFrame(dataset1)
#df3 = pd.concat([df1, df2])
SIM. MERGE ADOTA LOGICA SQL PARA OPERAÇÕES ESTILO JOIN. como o colega colocou, a documentação especifica q se nenhum parametro for especificado, vai cair no default, que é how="inner". como os dataframes nao têm nenhum campo em comum, vai retornar um dataframe vazio. o merge é semelhante ao join; em vez de uma tabela fazer join em outra, pega-se um dataframe e faz o merge com outro: df1.merge(df2). claro q assim como em sql join, é necessario um criterio, especificado pelo parametro 'how'. oara se ter o mesmo resultado, basta substituir o pd.concat por
df3 = df1.merge(df2, how="outer")
print(df3)
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo