#python #excel #pandas
#python #excel #pandas
Вопрос:
Я пытаюсь импортировать файлы Excel, которые имеют несколько листов. В настоящее время мой код (ниже) импортирует только первый лист. Оставшаяся часть кода представляет собой предварительные вычисления только с одного листа (в настоящее время это первый, поскольку я переместил его туда, чтобы заставить его работать, но бонус, если я смогу избежать этого шага).
В идеале я хотел бы импортировать все листы, предварительно выполнить вычисления на одном листе и снова экспортировать все листы в файл Excel. Большинство листов будут импортироваться / экспортироваться без изменений, в то время как на одном листе с определенным / согласованным именем будут предварительно сформированы вычисления, а также экспортированы. Не уверен, на какие функции обратить внимание. Спасибо!
df = pd.read_excel("excelfilename.xlsx")
df.head()
#other code present here preforming calculations
df.to_excel(r'newfilename.xlsx', index = False)
Комментарии:
1. Используйте sheet_name=None для всех листов. pandas.pydata.org/pandas-docs/stable/reference/api /…
Ответ №1:
Загрузите файл Excel с помощью pandas
, затем получите имена листов с помощью xlrd
, а затем сохраните измененные данные обратно.
import xlrd
file_name = "using_excel.xlsx"
sheet_names_ = xlrd.open_workbook(file_name, on_demand=True).sheet_names()
for sheet_name in sheet_names_:
df_sheet = pd.read_excel(file_name, sheet_name=sheet_name)
# do something
if you_want_to_write_back_to_same_sheet_in_same_file:
writer = pd.ExcelWriter(file_name)
df_sheet.to_excel(writer, sheet_name=sheet_name)
writer.save()
Комментарии:
1. Спасибо за это! Я считаю, что сейчас импортируются все, потому что вычисления выполняются независимо от того, где в файле находится интересующий лист. Однако обратно записывается только этот лист, а других там больше нет. Есть предложения?
2. итак, вам нужно удалить несколько листов? если это так, напишите новый файл только с нужными листами и удалите старый файл.