Я довольно новичок в использовании python для анализа данных и для написания кода в целом. Я использую pandas и ноутбук Jupyter для всего моего кодирования и анализа.
Я написал программу, которая принимает довольно большие наборы данных и выполняет некоторые преобразования и анализ, и я хочу записать два кадра данных, сгенерированных программой, в один файл Excel, каждый из которых расположен на отдельном листе. Я могу сделать это очень хорошо, когда я жестко закодирую путь к файлу в Excel Reader, как показано здесь:
df_peak = DataFrame()
df_ZScore_calc = DataFrame()
writer = pd.ExcelWriter('Analysis.xlsx')
df_peak.to_excel(writer, 'PeakHeight')
df_ZScore_calc.to_excel(writer, 'ZScore')
writer.save()
Я бы хотел, чтобы пользователь каждый раз идентифицировал папку и имя файла вместо жесткого кодирования. Я пробовал несколько подходов к этому, в основном с использованием tkinter, но каждый другой подход, который я пробовал, приводит к одной из нескольких ошибок ExcellWriter. Последнее, что я пробовал - это использовать tkinter askdirectory (), чтобы позволить пользователю идентифицировать папку, и tkinter simpledialog, чтобы позволить пользователю назвать файл. Затем я создаю третью переменную, которая объединяет указанный пользователем путь и имя файла. Что у меня выглядит примерно так:
from tkinter import simpledialog
from tkinter.filedialog import askdirectory
import os
SaveFolder = askdirectory()
FileName = simpledialog.askstring("Input", "What is the file name?")
SaveFilePath = os.path.abspath(SaveFolder + '/' + FileName + '.xlxs')
writer = pd.ExcelWriter(SaveFilePath)
df_peak.to_excel(writer, 'PeakHeight')
df_ZScore_calc.to_excel(writer, 'ZScore')
writer.save()
Если я распечатываю SaveFilePath, он выглядит правильно, и если вручную ввести то, что было напечатано из SaveFilePath в ExcelWriter, он работает правильно. Когда я пытаюсь использовать SaveFilePath непосредственно в ExcelWriter, я получаю сообщение об ошибке.
Любая помощь в том, чтобы заставить это работать, будет принята с благодарностью, будь то исправление кода, который я имею, или предложение чего-то совершенно другого.
Редактировать: Ответ получен. Была опечатка ".xlxs" вместо ".xlsx"