python - 将 pandas groupby 对象保存到 csv 文件中

标签 python pandas

尽管我读过类似的帖子,例如Pandas groupby to to_csv,但我有一个无法弄清楚的问题。它对我不起作用。我正在尝试编写代码将每个组与 groupby 对象分开,并将每个组保存到自己的 Excel 电子表格中。

我附上了一个代码玩具示例,该代码是为了在带有某些列的 pandas 上获取 groupby 对象而执行的。

现在,我需要将此对象中的每个组保存到单独的 csv 文件中,或者至少保存到 Excel 中的单独工作表中。

dff = pd.DataFrame({'SKU': ['001', '002', '003'],
                    'revenue_contribution_in_percentage': [0.2, 0.5, 0.3],
                    'BuyPrice' : [2,3,4],
                    'SellPrice' : [5,6,6],
                    'margin' : [3,3,2],
                    'Avg_per_week' : [3,2,5],
                    'StockOnHand' : [4,10,20],
                            'StockOnOrder': [0,0,0],
                            'Supplier' : ['ABC', 'ABC', 'ABZ' ],
                            'SupplierLeadTime': [5,5,5],
                            'cumul_value':[0.4,0.6,1],
                            'class_mention':['A','A','B'],
                            'std_week':[1,2,1],
                            'review_time' : [2,2,2],
                            'holding_cost': [0.35, 0.35, 0.35],
                            'aggregate_order_placement_cost': [200, 230,210]
})

我已执行以下操作来获取 groupby 供应商对象

groups = [group.reset_index().set_index(['SKU'])[[
                            'revenue_contribution_in_percentage',
                            'BuyPrice',
                            'SellPrice',
                            'margin',
                            'Avg_per_week',
                            'StockOnHand',
                            'StockOnOrder',
                            'Supplier',
                            'SupplierLeadTime',
                            'cumul_value',
                            'class_mention',
                            'std_week',
                            'review_time',
                            'holding_cost',
                            'aggregate_order_placement_cost',
                            'periods']] for _, group in dff.groupby('Supplier')]

df_group = pd.DataFrame(groups).sum()
group_to_excel = df_group.to_csv('results.csv')

我想要得到的输出如下:两个不同的数据集,可以以 csv 格式保存,如下所示:

   SKU  revenue_contribution_in_percentage  BuyPrice  SellPrice  margin  \
0  001                                 0.2         2          5       3   
1  002                                 0.5         3          6       3   

   Avg_per_week  StockOnHand  StockOnOrder Supplier  SupplierLeadTime  \
0             3            4             0      ABC                 5   
1             2           10             0      ABC                 5   

   cumul_value class_mention  std_week  review_time  holding_cost  \
0          0.4             A         1            2          0.35   
1          0.6             A         2            2          0.35   

   aggregate_order_placement_cost  
0                             200  
1                             230  

   SKU  revenue_contribution_in_percentage  BuyPrice  SellPrice  margin  \
0  003                                 0.3         4          6       2   

   Avg_per_week  StockOnHand  StockOnOrder Supplier  SupplierLeadTime  \
0             5           20             0      ABZ                 5   

   cumul_value class_mention  std_week  review_time  holding_cost  \
0            1             B         1            2          0.35   

   aggregate_order_placement_cost  
0                             210  

此时,我的代码给出了唯一一个工作表(可怕的工作表),上面几乎没有任何内容。我现在不确定出了什么问题。 我非常感谢对此的一些帮助!非常感谢!

最佳答案

您不需要groupby,因为您没有聚合任何内容。您真正想要的是按每个唯一的供应商对 dff 进行切片,并将它们导出到自己的文件中。试试这个:

cols = [
    'SKU',
    'revenue_contribution_in_percentage',
    'BuyPrice',
    'SellPrice',
    'margin',
    'Avg_per_week',
    'StockOnHand',
    'StockOnOrder',
    'Supplier',
    'SupplierLeadTime',
    'cumul_value',
    'class_mention',
    'std_week',
    'review_time',
    'holding_cost',
    'aggregate_order_placement_cost'
]

for supplier in dff['Supplier'].unique():
    sub_dff = dff[dff['Supplier'] == supplier][cols]
    sub_dff.to_csv(f'{supplier}_data.csv')

关于python - 将 pandas groupby 对象保存到 csv 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59613095/

相关文章:

python - 如何在python中从一个列表中创建多个列表

python - 如何从 pandas 数据框列的元组中的一个位置获取所有值?

python - Dataframe.to_string() 问题

python - 用条件标准化 Pandas 系列

python - 如何使用 python pandas 从数据框中删除重复的列

python pandas dataframe groupby 将同一组放在一起

python - 连续大写字母正则表达式

python - Pygame Pong 有条件使球弹跳

python - 需要帮助对数据进行排序

python - 如何在Python中显示小数计算?