pandas:将dataframe分割成多张相同的电子表格

假设我有3个相同长度的字典,我将其合并为一个独特的pandas数据框。 然后我把这个数据框转储到一个Excel文件中。 例:

 import pandas as pd from itertools import izip_longest d1={'a':1,'b':2,'c':3,'d':4,'e':5,'f':6} d2={'a':1,'b':2,'c':3,'d':4,'e':5,'f':6} d3={'a':1,'b':2,'c':3,'d':4,'e':5,'f':6} dict_list=[d1,d2,d3] stats_matrix=[ tuple('dict{}'.format(i+1) for i in range(len(dict_list))) ] + list( izip_longest(*([ v for k,v in sorted(d.items())] for d in dict_list)) ) stats_matrix.pop(0) mydf=pd.DataFrame(stats_matrix,index=None) mydf.columns = ['d1','d2','d3'] writer = pd.ExcelWriter('myfile.xlsx', engine='xlsxwriter') mydf.to_excel(writer, sheet_name='sole') writer.save() 

此代码将生成一个带有唯一表的Excel文件:

 >Sheet1< d1 d2 d3 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 

我的问题是:我怎样才能以这样一种方式来分割这个数据框,使得生成的Excel文件有3张表格,其中头部被重复,每张表格中有两行值?

编辑

在这里给出的例子中,每个都有6个元素。 在我的真实情况下,他们有25000,数据框的索引从1开始。 所以我想把这个dataframe分成25个不同的子片,每个子片都被转储到同一个主文件的专用Excel工作表中。

预期结果: 一个 Excel文件包含多个表单。 标题重复。

 >Sheet1< >Sheet2< >Sheet3< d1 d2 d3 d1 d2 d3 d1 d2 d3 1 1 1 3 3 3 5 5 5 2 2 2 4 4 4 6 6 6 

首先准备你的数据框来写这样的:

 prepdf = mydf.groupby(mydf.index // 2).apply(lambda df: df.reset_index(drop=True)) prepdf 

在这里输入图像说明

您可以使用此function来重置您的索引。

 def multiindex_me(df, how_many_groups=3, group_names=None): m = np.arange(len(df)) reset = lambda df: df.reset_index(drop=True) new_df = df.groupby(m % how_many_groups).apply(reset) if group_names is not None: new_df.index.set_levels(group_names, level=0, inplace=True) return new_df 

像这样使用它:

 new_df = multiindex_me(mydf) 

要么:

 new_df = multiindex_me(mydf, how_many_groups=4, group_names=['One', 'Two', 'Three', 'Four']) 

然后将每个横截面写入不同的工作表,如下所示:

 writer = pd.ExcelWriter('myfile.xlsx') for sheet in prepdf.index.levels[0]: sheet_name = 'super_{}'.format(sheet) prepdf.xs(sheet).to_excel(writer, sheet_name) writer.save()