[英]Creating Excel sheets in same workbook in python
Need a suggestion in my code. 需要在我的代码中提出建议。
I have a data frame in sheet1 of workbook: 我在工作簿的sheet1中有一个数据框:
column 1 column 2
000A0000 2
000B0000 3
000A0001 5
000B0001 1
My desired result: 我想要的结果:
in sheet 2 of Workbook: 在工作簿的第2页中:
column 1 column 2
000A0000 2
000A0001 5
In sheet 3 of Workbook: 在工作簿的表3中:
column 1 column 2
000B0000 3
000B0001 1
I have done my coding: 我完成了我的编码:
import pandas as pd
file="workbook.xlxs"
print(data.sheet_names)
data=data.parse("sheet1")
substrings = ['A', 'B']
T = {x: df[df['sheet1'].str.contains(x, na=False, regex=False)] for x in substrings]
for key, var in T.items():
var.to_excel(f'{key}.xlsx', index=False)
by this I can create new workbook. 通过这个我可以创建新的工作簿。 But I need to create new worksheet in same workbook. 但是我需要在同一个工作簿中创建新的工作表。
Any suggestion would be appreciated. 任何建议将不胜感激。
To add sheets to the same excel file use openpyxl
module as follows: 要将工作表添加到同一个Excel文件,请使用openpyxl
模块,如下所示:
import pandas as pd
import openpyxl
#reading the sheet1 using read_excel
df = pd.read_excel('workbook.xlsx', sheet_name='Sheet1')
#creating pandas ExcelWriter object and loading the excel file using `openpyxl`
df_writer = pd.ExcelWriter('workbook.xlsx', engine='openpyxl')
excel = openpyxl.load_workbook('workbook.xlsx')
df_writer.book = excel
#checking string in column 1 and writing those to respective sheets in same workbook
for string in ['A','B']:
df[df['column 1'].str.contains(string)].to_excel(df_writer,sheet_name=string)
#saving and closing writer
writer.save()
writer.close()
to_excel would not append sheets to your existing file: to_excel不会将工作表附加到现有文件:
use openpyxl instead:(something like below) 改用openpyxl :(如下所示)
import pandas
from openpyxl import load_workbook
book = load_workbook('path+filename_you_want_to_write_in.xlsx')
writer = pandas.ExcelWriter('path+filename_you_want_to_write_in.xlsx', engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
df.to_excel(writer, "Sheet_name_as_per_your_choice",index=False)
writer.save()
Also if you dynamically want to read through the sheets and not specific sheets: 此外,如果您动态地想要阅读工作表而不是特定工作表:
f = pd.ExcelFile(file)
sheet_names = df.sheet_names
for i in list(sheet_names):
df = pd.read_excel(f,i)
This iterates through all your sheets and provides a dataframe based on the sheets. 这将遍历所有工作表,并根据工作表提供数据框。
Try using the xlsxwriter engine. 尝试使用xlsxwriter引擎。
writer = pd.ExcelWriter('<< file_name >>', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet2')
writer.save()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.