为Excel Workbook编写多个动态数据框



我正在寻找过滤不同数据框以导出工作表的帮助。这是一个示例数据框。

import pandas as pd
import numpy as np
np.random.seed(1111)
df = pd.DataFrame({
'Category':np.random.choice( ['Group A','Group B','Group C','Group D'], 10000),
'Sub-Category':np.random.choice( ['X','Y','Z'], 10000),
'Sub-Category-2':np.random.choice( ['G','F','I'], 10000),
'Product':np.random.choice( ['Product 1','Product 2','Product 3'], 10000),
'Units_Sold':np.random.randint(1,100, size=(10000)),
'Dollars_Sold':np.random.randint(100,1000, size=10000),
'Customer':np.random.choice(pd.util.testing.rands_array(10,25,dtype='str'),10000),
'Date':np.random.choice( pd.date_range('1/1/2016','12/31/2018',  
                      freq='D'), 10000)})

这是我想导出到Excel Workbooks的不同数据框架:

df1 = df.groupby(['Category','Sub-Category-2','Product']).agg({'Units_Sold':'sum'})
df2 = df.groupby(['Category','Product',pd.Grouper(key='Date',freq='A-APR')]).agg({'Dollars_Sold':'sum'})
df3 = df.groupby(['Category','Product','Sub-Category']).agg({'Units_Sold':'sum','Dollars_Sold':'sum'})

对于每个"类别",我想创建一个单独的Excel Workbook,其中每个数据框中被过滤以仅显示特定的"类别"。例如,工作簿" A组"将具有DF1,DF2&DF3作为单独的工作表,其中仅显示"类别" ="组A"的值。工作簿" B组"将具有相同的信息,只是在"类别" ='组B'中过滤。

我知道如何使用.loc手动执行此操作,但这似乎很慢。我的问题是如何以pythonic的方式进行操作?示例数据并不大,但是我的现实世界数据在"类别"中具有30多个类别。有没有办法创建一个函数来适当切片&过滤后踢出数据框?

只运行

怎么样
for c in df.Category.unique():
    with pd.ExcelWriter(f"/Users/constantino/Desktop/{c}.xlsx") as writer:
        for i, d in enumerate([df1, df2, df3]):
            d.loc[c].to_excel(writer, sheet_name=f"df{i+1}")

最新更新