Boas Matheus!
Tudo bem? Espero que sim.
Desculpe pela demora.
Com poucas informações sobre o DataFrame fica um pouco difícil compreender corretamente qual a situação. Vou mostar como fazer o cruzamento, com um ou dois DataFrames.
Considerando que você tenha um DataFrame no qual os dados se repetem e um identificador de produto, ou seja, um dataFrame da seguinte forma:
#Criando o DataFrame
import pandas as pd
produtos_id = [13, 21, 17, 36, 13, 21, 17, 36,]
produtos_nome = ['cadeira', 'mesa', 'tinta', 'armário','cadeira', 'mesa', 'tinta', 'armário']
mes_de_referencia = ['janeiro', 'janeiro', 'janeiro', 'janeiro', 'dezembro', 'dezembro','dezembro','dezembro']
valor = [100, 300, 50, 400, 120, 210, 60, 320]
dados['produto_id'] = produtos_id
dados['produto_nome'] = produtos_nome
dados['mes'] = mes_de_referencia
dados['valor'] = valor
dados
Que retorna o dataframe:
| produto_id | produto_nome | mes | valor |
---|
0 | 13 | cadeira | janeiro | 100 |
1 | 21 | mesa | janeiro | 300 |
2 | 17 | tinta | janeiro | 50 |
3 | 36 | armário | janeiro | 400 |
4 | 13 | cadeira | dezembro | 120 |
5 | 21 | mesa | dezembro | 210 |
6 | 17 | tinta | dezembro | 60 |
7 | 36 | armário | dezembro | 320 |
Vou criar dois DataFrames a partir desse isolando os produtos de janeiro e de dezembro:
produtos_janeiro = dados.query("mes == 'janeiro'")
produtos_janeiro.set_index('produto_id', drop=True, inplace=True)
Para criar o DataFrame de janeiro e:
produtos_dezembro = dados.query("mes == 'dezembro'")
produtos_dezembro = produtos_dezembro[['produto_id', 'valor']]
produtos_dezembro.set_index('produto_id', drop = True, inplace=True)
produtos_dezembro.columns = ['valor_dezembro']
produtos_dezembro
Para criar o de dezembro.
Aqui, eu selecionei para dezembro apenas os dados que me interessam, que é o identificador do produto e o valor. Além disso, para ambos os casos, setei o identificador do produto como index, o que facilitará as coisas mais tarde.
Agora, vamos juntas os dois DataFrames através da função pd.join
:
dados_comparacao = produtos_janeiro.join(produtos_dezembro)
Que retorna:
produto_id | produto_nome | mes | valor | valor_dezembro |
---|
13 | cadeira | janeiro | 100 | 120 |
21 | mesa | janeiro | 300 | 210 |
17 | tinta | janeiro | 50 | 60 |
36 | armário | janeiro | 400 | 320 |
Vamos melhorar um pouco esse DataFrame:
dados_comparacao.drop('mes', axis=1, inplace=True)
dados_comparacao.columns = ['nome', 'valor_janeiro', 'valor_dezembro']
Tirando o mes, e renomeando as colunas, agora as informações estão mais claras. Além disso, vamos adicionar uma outra coluna com a diferença entre os valores de dezembro e janeiro:
dados_comparacao['diff'] = dados_comparacao.valor_dezembro - dados_comparacao.valor_janeiro
Agora, temos uma tabela na qual podemos facilmente comparar os valores:
produto_id | produto_nome | mes | valor | valor_dezembro |
---|
13 | cadeira | janeiro | 100 | 120 |
21 | mesa | janeiro | 300 | 210 |
17 | tinta | janeiro | 50 | 60 |
36 | armário | janeiro | 400 | 320 |
Espero ter ajudado!
Bons Estudos!