Я пытаюсь автоматизировать ежедневный отчет. У меня есть таблица Excel, и мне нужно извлечь информацию, чтобы отформатировать ее особым образом. Есть столбцы: 'Invoice', 'Name', 'Address', 'PO #', 'Product', 'Lot', and 'Quantity'
.
Во-первых, мне нужна информация, сгруппированная по «Счет-фактура». Для каждого счета необходимо указать имя, адрес и номер заказа. Согласно этой информации, каждая линия продуктов отдельно.
Используя groupby
в пандах, я могу группировать большую часть информации по счетам и продуктам, но это не обеспечивает нужный мне формат. Я также попытался поместить столбец счета-фактуры в список и выполнить цикл for для циклического перебора каждого номера счета, но когда я выполняю итерацию в цикле, он просто печатает все продукты для каждого счета-фактуры.
Поскольку я работаю в основном с R
и MySQL
, я чувствую, что мне нужно использовать оператор where для списка, но я не уверен, как это сделать в цикле. Я также не уверен, как достичь цели печати другой информации, такой как имя, адрес и номер заказа под накладной.
groupby
, который не дает правильный формат, а также суммирует количество, когда это не нужно.
group_inv_pro = df.groupby(['Invoice', 'Product', 'Lot'])['Quantity'].sum()
print(group_inv_pro)
Цикл, который я пытался построить. Это дает каждый продукт для каждого счета.
invoices = df['Invoice'].drop_duplicates().tolist()
for invoice in invoices:
print("Invoice: " + str(invoice))
for invoice, row in df.iterrows():
print(row['Product'] + " " + str(row['Lot']) + " " + str(row['Quantity']))
Отчет, который я пытаюсь создать, содержит следующую информацию в этом формате:
Invoice:
Name:
Address:
PO#:
Product Lot Quantity
Пример требуемого формата отчета
Вот пример данных для удобства
import pandas as pd
d = {'Invoice':[632, 632, 632, 633, 633, 634, 634, 634],
'Name':['Jason', 'Jason', 'Jason', 'Sam', 'Sam', 'Jessica', 'Jessica', 'Jessica'],
'Address':['76 Berry Lane', '76 Berry Lane', '76 Berry Lane', '62 Star Dr.', '62 Star Dr.',
'28 Jefferson', '28 Jefferson', '28 Jefferson'],
'PO #':[46, 46, 46, 24, 24, 23, 23, 23],
'Product':['ZDA89', 'KLP65', 'TYW85', 'ZDA89', 'PLW36', 'KLP65', 'PLW36', 'PLW36'],
'Lot':[56, 68, 14, 56, 90, 68, 90, 101],
'Quantity':[2, 1, 1, 3, 3, 9, 4, 4]}
df = pd.DataFrame(data=d)
Пример электронной таблицы