使用Python Pandas在一个excel文件中创建多个电子表格

时间:2016-10-27 04:11:40

标签: python excel pandas

作为标题,我需要使用Pandas在excel文件中创建多个电子表格。 this threadthis one enter image description here 所有提供的解决方案,我认为我的情况有点不同。这两种情况都使用类似的东西:

writer = pd.ExcelWriter('output.xlsx')
DF1.to_excel(writer,'Sheet1')
DF2.to_excel(writer,'Sheet2')
writer.save()

然而,问题在于我不能同时在我的内存中保留多个数据帧,因为每个数据帧都太大了。我的数据可能是这个的复杂版本: df = pd.DataFrame(dict(A=list('aabb'), B=range(4), C=range(6,10)))
Out: A B C 0 a 0 6 1 a 1 7 2 b 2 8 3 b 3 9

我打算使用['a', 'b', 'c']中的grplist项来执行某种计算,并最终在data['A'] == ac时生成单独的电子表格:

data = pd.read_csv(fileloc)
grplist = [['a','b','c'],['d','e','f']]
for groups, numbers in zip(grplist, range(1, 5)):
    for category in groups:
        clean = data[(data['A'] == category) & (data['B'] == numbers)]['C']
        # --------My calculation to generate a dataframe--------
        my_result_df = pd.DataFrame(my_result)
        writer = ExcelWriter('my_path_of_excel')
        my_resultdf.to_excel(writer, 'Group%s_%s' % (numbers, category[:4]))
        writer.save()
        gc.collect()

遗憾的是,由于groups, numbers循环播放,我的代码不会创建多个电子表格。我只能在excel中的单个电子表格中获得最后的结果。我该怎么办?

这是我在这里发表的第一篇文章。我希望我遵守所有规则,以便这个线程可以很好地结束。如果有任何需要修改或改进的地方,请告诉我。谢谢你的帮助:)

1 个答案:

答案 0 :(得分:0)

考虑df

df = pd.DataFrame(dict(A=list('aabb'), B=range(4)))

循环播放群组并打印

for name, group in df.groupby('A'):
    print('{}\n\n{}\n\n'.format(name, group))

a

   A  B
0  a  0
1  a  1


b

   A  B
2  b  2
3  b  3

to_excel

writer = pd.ExcelWriter('output.xlsx')
for name, group in df.groupby('A'):
    group.to_excel(writer, name)
writer.save()
writer.close()