Dado que Felipe quer fazer a junção entre dois conjuntos de dados e escreveu o seguinte código: import pandas as pd df1 = pd.DataFrame({'lkey': ['foo', 'bar', 'baz', 'foo'], 'value': [1, 2, 3, 5]}) df2 = pd.DataFrame({'rkey': ['foo', 'bar', 'baz', 'foo'], 'value': [5, 6, 7, 8]}) df1.merge(df2, left_on='lkey', right_on='rkey') Qual destas alternativas descreve as saídas do código? I. O conjunto resultante terá colunas lkey, value_x, rkey, value_y II. O código não executará, pois Filipe não definiu os sufixos de coluna III. O resultado do código em questão retornará um pd.Series juntando os conjuntos pela lkey e rkey
Questão
Dado que Felipe quer fazer a junção entre dois conjuntos de dados e escreveu o seguinte código: import pandas as pd df1 = pd.DataFrame({'lkey': ['foo', 'bar', 'baz', 'foo'], 'value': [1, 2, 3, 5]}) df2 = pd.DataFrame({'rkey': ['foo', 'bar', 'baz', 'foo'], 'value': [5, 6, 7, 8]}) df1.merge(df2, left_on='lkey', right_on='rkey') Qual destas alternativas descreve as saídas do código? I. O conjunto resultante terá colunas lkey, value_x, rkey, value_y II. O código não executará, pois Filipe não definiu os sufixos de coluna III. O resultado do código em questão retornará um pd.Series juntando os conjuntos pela lkey e rkey
import pandas as pd df1 = pd.DataFrame({'lkey': ['foo', 'bar', 'baz', 'foo'], 'value': [1, 2, 3, 5]}) df2 = pd.DataFrame({'rkey': ['foo', 'bar', 'baz', 'foo'], 'value': [5, 6, 7, 8]}) df1.merge(df2, left_on='lkey', right_on='rkey')
Alternativas
A) Apenas a opção I está correta.
B) Apenas a opção II está correta.
C) Apenas a opção III está correta.
D) Apenas as opções II e III estão corretas.
E) Apenas as opções I e III estão corretas.
Explicação
Vamos analisar o que acontece com df1.merge(df2, left_on='lkey', right_on='rkey'):
- Tipo do retorno do
merge
DataFrame.merge(...)retorna umpd.DataFrame, não umpd.Series.- Portanto, a afirmação III é falsa.
- Colunas repetidas (
valueem ambos os DataFrames)
- Como
df1edf2possuem uma coluna com o mesmo nome (value) e ela não é chave de junção, o pandas resolve o conflito automaticamente criando sufixos padrão:value_x(vindo dodf1)value_y(vindo dodf2)
- Além disso, como as chaves têm nomes diferentes (
lkeyerkey), ambas aparecem no resultado. - Logo, o resultado terá as colunas:
lkey,value_x,rkey,value_y. - Portanto, a afirmação I é verdadeira.
- Necessidade de definir sufixos
- Não é obrigatório definir
suffixes=..., pois o pandas usa os padrões('_x','_y')quando há colisão de nomes. - Então, a afirmação II é falsa.
Conclusão: apenas a afirmação I está correta.
Alternativa correta: (A).