您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – Pandas:将数据帧切割成同一电子表格的多个工作表

5b51 2022/1/14 8:21:57 python 字数 4082 阅读 501 来源 www.jb51.cc/python

假设我有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'

概述

假设我有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,'f':6}
d3={'a':1,'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张,其中标题重复,每张表中有两行值?

编辑

在这里给出的例子中,dicts每个都有6个元素.在我的实际情况中,它们有25000,数据帧的索引从1开始.所以我想将这个数据帧切割成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

enter image description here

您可以使用此功能重置索引.

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

总结

以上是编程之家为你收集整理的python – Pandas:将数据帧切割成同一电子表格的多个工作表全部内容,希望文章能够帮你解决python – Pandas:将数据帧切割成同一电子表格的多个工作表所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶