根据列值将CSV分为单独的excel文件,然后在保存之前更改excel的格式

时间:2019-03-28 20:47:02

标签: python pandas openpyxl

您好,我是python的新手,但已经受命创建一个执行以下操作的工具: 1)打开一个CSV文件 2)按单个列的值拆分数据帧 3)然后将这些分组保存到单独的excel工作簿中并进行格式设置(可以根据新添加的数据将图表添加到其中一个工作表中)

我找到了此代码,该代码将其分组并保存到csv。我可以更改为excel格式,但是我确实在努力进行格式设置和图表处理。任何帮助将不胜感激。

gp = df.groupby('CloneID')
for g in gp.groups:
    path = 'CloneID' + str(g) + '.txt'
    gp.get_group(g).to_csv(path)

1 个答案:

答案 0 :(得分:1)

创建格式良好的excel工作表的一种简单方法是对模板进行预格式化,并根据需要使用openpyxl来填充行。

从总体上讲,您的项目应包括一个模板,该模板将是一个xlsx文件(excel)。例如,如果您将项目命名为my_project,则项目的结构应如下所示:

my_project
--__init__.py
--templates
----formated_excel.xlsx
--main.py

其中templates是目录,formatted_excel是xlsx文件,而main.py是您的代码。

在main.py中,代码的基本逻辑将如下所示:

import os
import openpyxl

TEMPLATE = os.path.join(os.path.dirname(os.path.abspath(__file__)),
                                    'templates', 'formated_excel.xlsx')

wb = openpyxl.load_workbook(TEMPLATE)
# to use wb[VALUE], your template must have a sheet called VALUE
data_sheet = wb['Data'] 

# have enumerate start at 2, as in most cases row 1 of a sheet 
# is the header
for row, value in enumerate(data, start=2): 
    data_sheet[f'A{row}'] = value

wb.save('my_output.xlsx')

此示例是有关如何使用openpyxl的非常非常基本的说明。

请注意,我假设您使用的是python3,否则,在设置要写入的data_sheet行时,必须使用适当的字符串格式。 Openpyxl还具有Chart Support,您可以阅读它以帮助您格式化图表。

您没有提供确切的操作或正在使用的数据的详细信息,因此您将不得不扩展此示例以适合您的数据集。