Python 将pandas groupby对象保存到csv文件中
我有一个问题,虽然我读过类似的文章,比如。这对我不起作用。我试图编写代码,将每个组与groupby对象分开,并将每个组保存到自己的excel电子表格中 我附加了一个代码的玩具示例,该代码是我在带有一些列的pandas上获取groupby对象时使用的 现在,我需要将此对象中的每个组保存到单独的csv文件中,或者至少保存在excel中单独的工作表中Python 将pandas groupby对象保存到csv文件中,python,pandas,Python,Pandas,我有一个问题,虽然我读过类似的文章,比如。这对我不起作用。我试图编写代码,将每个组与groupby对象分开,并将每个组保存到自己的excel电子表格中 我附加了一个代码的玩具示例,该代码是我在带有一些列的pandas上获取groupby对象时使用的 现在,我需要将此对象中的每个组保存到单独的csv文件中,或者至少保存在excel中单独的工作表中 dff = pd.DataFrame({'SKU': ['001', '002', '003'], 'reven
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
及
在这一点上,我的代码给出了一个也是唯一一个几乎没有任何内容的工作表(可怕的工作表)。我不确定在这一点上到底出了什么问题。
我将非常感谢您在这方面的帮助!非常感谢 您不需要
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')
能否在电子表格中指定所需内容?理想情况下使用一些虚拟数据,以便能够复制?我们不知道变量组包含什么。df2在哪里?我在
groups
上遇到一个错误,很抱歉输入错误,df2实际上是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')