python - Pandas :将数据框切成同一电子表格的多张纸

标签 python excel pandas dataframe slice

假设我有 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 个工作表的方式切片这个数据框,其中重复标题并且每个中有两行值床单?

编辑

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

预期结果:一个 包含多个 工作表的 Excel 文件。 header 重复。

>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 :将数据框切成同一电子表格的多张纸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38672018/

相关文章:

c# - 相当于 struct.unpack ("21"、 logfile.read(8)) 的 C# 是什么?

python - 在 Linux 上获取鼠标位置,纯 Python

excel - 有没有办法在发送之前对 Excel 文件进行加密?

mysql - 如何使用 Apache Drill 同时处理 Excel 文档和 RDBMS 中的源?

python - 将数组结构转换为数据框以获取列名称

python数据帧: return column name in apply lambda

python - 类型错误 : unsupported operand type(s) for +: 'float' and 'str'

python - 如何让 Flask-SQLAlchemy 与应用程序工厂模式一起工作

excel - 如何在 pytest excel 报告中添加测试步骤中的值

python - Pandas 数据框 - 使用 np.clip() 设置边界并从列中的特定值中减去值