作为标题,我需要使用Pandas在excel文件中创建多个电子表格。 this thread和this one 所有提供的解决方案,我认为我的情况有点不同。这两种情况都使用类似的东西:
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'] == a
到c
时生成单独的电子表格:
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中的单个电子表格中获得最后的结果。我该怎么办?
这是我在这里发表的第一篇文章。我希望我遵守所有规则,以便这个线程可以很好地结束。如果有任何需要修改或改进的地方,请告诉我。谢谢你的帮助:)
答案 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()