Использование groupBy для создания Excel с двумя листами и двумя наборами данных

#python-3.x #pandas #group-by

#python-3.x #pandas #группировка по

Вопрос:

У меня есть два набора данных df1 и df2

моя цель — создать excel-файл с названием фрукта, а внутри файла я хочу создать два листа с информацией о клиенте и второй лист с информацией о продавце.

 df1 = pd.DataFrame({
"Fruit": ["apple", "orange", "banana", "apple", "orange"],
"customerName": ["John", "Sam", "David", "Rebeca", "Sydney"],
"customerID": [877, 546, 767, 887, 890],
"PurchasePrice": [1, 2, 5, 6, 4]})

df2 = pd.DataFrame({
"Fruit": ["apple", "orange", "banana", "apple", "orange"],
"VenderName": ["share", "cami", "sniff", "tom", "Adam"],
"VenderID": [0091, 0092, 0094, 0097, 0076]})
 

Я знаю, как сделать groupby с помощью набора данных и сгенерировать файл.

 grouped = df.groupby("Fruit")
# run this to generate separate Excel files
for fruit, group in grouped:
    group.to_excel(excel_writer=f"{fruit}.xlsx", sheet_name= customer, index=False)
 

Пожалуйста, помогите в решении этой проблемы.

Ответ №1:

Используйте ExcelWriter :

 from pandas import ExcelWriter


fruits = set(df1["Fruit"].unique().tolist()   df2["Fruit"].unique().tolist()) 
for fruit in fruits:
    sheets = {
        "Customer": df1.loc[df1["Fruit"].eq(fruit)],
        "Vendor": df2.loc[df2["Fruit"].eq(fruit)]
    }
    with ExcelWriter(f"{fruit}_.xlsx") as writer:
        for sh_name, table in sheets.items():
            table.to_excel(writer, sheet_name=sh_name, index=False)