问题描述:
已知文件“超市营业额2.xlsx”中结构与部分数据如图所示:
现在要求把每个员工的交易数据写入文件“各员工数据.xlsx”,每个员工的数据占一个worksheet,结构和“超市营业额2.xlsx”一样,并以员工姓名作为worksheet的标题,预期的结果文件如图所示:
很显然,要解决这个问题需要这样几步:1)读取原始数据文件创建DataFrame,2)分离DataFrame,把不同员工的数据分离开,3)把不同员工的数据写入同一个Excel文件的不同Worksheet。
第1步比较简单,使用pandas的read_excel()函数读取Excel文件即可。
对于第2步,需要首先获取所有员工的唯一姓名,然后使用DataFrame结构的布尔运算也很容易分离。
对于第3步,需要使用DataFrame结构的to_excel()方法来实现,把第2步中分离得到的每位员工的数据写入同一个Excel文件的不同Worksheet中,该方法语法为:
to_excel(excel_writer, sheet_name='Sheet1', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, startrow=0, startcol=0, engine=None, merge_cells=True, encoding=None, inf_rep='inf', verbose=True)
该方法第一个参数可以是Excel文件路径或ExcelWriter对象,第二个参数sheet_name用来指定要写入的Worksheet名字。
第3步的要点是,to_excel()方法的第一个参数不能使用Excel文件路径,因为每次写入时会覆盖原来Excel文件中的内容。如果代码写成下面的样子:
代码可以运行,但是结果Excel文件中只有最后一次写入的数据,如图:
对于本文描述的需要,需要为to_excel()方法第一个参数指定为ExcelWriter对象,正确代码如下: