У меня есть лист Excel со следующими столбцами.
Date, Ship-to-party ,Volume
1/09/2019 PQ01 1000
2/09/2019 PQXC 2500
...
Другой лист похож;
Document Date Deliveryid Sales
01/09/2019 153678 350
01/09/2019 236742 400
Другой лист похож;
Time Site Dips
01/09/2019 SiteA 1500
01/09/2019 SiteB 1222
...
Вдругой файл excel / csv Я определил, что означает доставка.То есть у меня изначально есть 3 разных рабочих листа, каждый из которых содержит столбец (например: sitename) под разными именами.(например: «Отправитель», «Sitename», «Deliveryid»). Мое требование - объединить все 3 рабочих листа в один лист на основе даты и названия места вместе с другими значениями.Для этого у меня есть отдельный лист, в котором указано, какое значение для отправки получателю = Sitename = Deliveryid (есть 3 столбца)
Как заменить исходные столбцы из 3 листов на основе одного имени и объединить ихполучить один лист Excel с использованием панд?
Мой лист карт содержит
ship-to party Sitename Deliveryid
PQ01 SiteA 543892
PQXY SiteB 539081
....
Я ожидаю, что мой окончательный лист будет выглядеть как
Date Sitename Sales Dips Volume
1/09/2019 SiteA 500 1000 1500
1/09/2019 SiteB 100 500 2000
....
Я пытаюсь сделать то же самое, что упомянул Хюэ;
def write_dips(writer):
file_path = '/Users/ratha/PycharmProjects/DataLoader/output.xlsx'
mappingfilepath ='/Users/ratha/PycharmProjects/DataLoader/data/mappings/File Mapping.csv'
df_dips = pd.read_excel(file_path, sheet_name='DipsSummary')
df_sales = pd.read_excel(file_path, sheet_name='SaleSummary')
df_delivery = pd.read_excel(file_path, sheet_name='DeliverySummary')
df_mapping = pd.read_csv(mappingfilepath, delimiter=',', skiprows=[1])
df2 = df_dips.merge(df_mapping, left_on='Site',right_on='SHIP TO NAME').\
merge(df_sales,left_on ='Delivery ID',right_on='Deliveryid').\
merge(df_delivery, left_on='SHIP-TO PARTY',right_on='Ship-To Party')
print(df2.dtypes) <--this prints all columns..so merging works
x = df2.groupby(['Dip Time', 'Site', 'Tank ID', 'Product', 'Volume',
'IdassId', 'TankNo', 'GradeNo','Sales','Ship-To Party', 'Material','Qty in Stock UoM'], as_index=False).apply(atg_aggregation)
x.to_excel(writer, sheet_name='DipsNewSummary')
Но конечный выходной файл ничего не содержит. Я пытаюсь сгруппировать группу правильно (я использую group by для всех столбцов, представленных на всех 3 листах?
После объединения я ожидаю, что мой листдолжно быть как; (я ожидаю выбрать несколько столбцов на всех 3 листах, поэтому применяем все столбцы в методе groupby)
Dip Time Site Tank ID Product Dips DeliveryId Sales Ship-To Party
1/09/2019 SiteA 1 Diesel 500 526781 150 PQ01