Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Convertendo Data e criando Pivot Table - Pandas

Pessoal, boa noite!

Preciso de ajuda no código abaixo, estou com uma planilha que ela está formatada a data da seguinte maneira (Transaction Date) : 17-03-21 ---> 17 de março de 2021

Preciso de alguma forma converter essa data para que o Pandas entenda que ela é de fato 17 de março de 2021 e depois criar uma Pivot Table conforme acontece no Excel. Nas linhas a informação dos Part Numbers, colunas com as informações das datas agregadas (Janeiro/21, Fevereiro/21...) e a contagem como valor.

Tentei da forma abaixo, porém quando ele cria a Pivot Table, o código está criando com mais datas do que de fato existe na planilha, ou seja, provavelmente está havendo uma conversão errada. E quando aparecem os meses ele aparece dia por dia por exemplo: 01-jan-21, 02-jan-21, 03-jan-21... e por ai vai.

Podem me ajudar?

import pandas as pd
import numpy as np
import matplotlib as plt
from datetime import date, datetime

transaction = pd.read_excel('Transactions.xlsx')
query_de_itens = pd.read_excel('Query de Itens.xlsx')

transaction = transaction.rename(columns={'Transaction Type Name':'Transaction_Type_Name'})

transaction = transaction.query('Transaction_Type_Name == "Move Order Issue"')

transaction['Transaction Date'] = transaction['Transaction Date'].astype('datetime64')

transaction['Transaction Date'] = pd.to_datetime(transaction['Transaction Date'], format='%d/%m/%Y')

transaction.pivot_table(index=['Part Number'], columns=['Transaction Date'], values=['Transaction Qty'],aggfunc=np.sum)
1 resposta
solução!

Boa tarde Felipe, blz?

Tenta alterar esta parte

transaction['Transaction Date'] = transaction['Transaction Date'].astype('datetime64')

transaction['Transaction Date'] = pd.to_datetime(transaction['Transaction Date'], format='%d/%m/%Y')

para

transaction['Transaction Date Formated'] =  pd.to_datetime(transaction['Transaction Date'], format='%d/%m/%Y')

e a partir dai dá uma conferida no conteúdo da coluna transaction['Transaction Date Formated'] se estiver ok vc volta ela para transaction['Transaction Date']

Não consegui reproduzir por isso pedi para vc fazer as tentativas, mas acontece que quando vc faz a primeira atribuição

transaction['Transaction Date'] = transaction['Transaction Date'].astype('datetime64')

salvo engano já rola uma conversão ao formato padrão de data e ai o format depois não resolve.