Создание листов Excel в одной книге в Python - PullRequest
0 голосов
/ 06 сентября 2018

Нужно предложение в моем коде.

У меня есть фрейм данных на листе 1 рабочей книги:

column 1           column 2
000A0000              2
000B0000              3
000A0001              5
000B0001              1

Мой желаемый результат:

в листе 2 рабочей тетради:

column 1           column 2
 000A0000              2
 000A0001              5

В листе 3 рабочей тетради:

column 1           column 2
 000B0000              3
 000B0001              1

Я сделал свое кодирование:

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)

этим я могу создать новую рабочую книгу. Но мне нужно создать новый лист в той же книге.

Любое предложение будет оценено.

Ответы [ 3 ]

0 голосов
/ 06 сентября 2018

Чтобы добавить листы в один файл 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()
0 голосов
/ 06 сентября 2018

Попробуйте использовать движок xlsxwriter.

writer = pd.ExcelWriter('<< file_name >>', engine='xlsxwriter')

df.to_excel(writer, sheet_name='Sheet2')

writer.save()
0 голосов
/ 06 сентября 2018

to_excel не добавит листы в существующий файл:

вместо этого используйте 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()

Также, если вы хотите динамически читать листы, а не конкретные листы:

f = pd.ExcelFile(file)
sheet_names = df.sheet_names
for i in list(sheet_names):
    df = pd.read_excel(f,i)

Это перебирает все ваши листы и предоставляет информационный кадр на основе листов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...