#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)