#python #pandas #dataframe #data-science #export-to-excel
Вопрос:
Привет, мои коллеги-любители данных.
Это мой первый вопрос в истории, поэтому я постараюсь быть предельно внимательным.
Сегодня я пытаюсь превратить серию больших документов Excel с большим количеством листов в один гигантский набор данных, а также внести некоторые изменения в способ отображения данных. чтобы быть ясным, я имею дело с сотнями листов, поэтому я ищу способы оптимизации решения.
В частности, у меня есть список названий таблиц данных, которые мне нужно извлечь из большой электронной таблицы Excel. Затем я пытаюсь повторить этот список и сохранить отредактированный список в виде нового файла в папке в моем блокноте jupyter.
Вот что я хотел бы, чтобы произошло:
list_of_tables = [a,b,c,d,e]
for i in range (0, len(list_of_tables):
df = pd.read_excel (r'Large_dataset_X.xlsx', sheet_name=list_of_tables[i])
{Bunch of code formatting and editing the file}
arg = "r'Edited Tables/" list_of_tables[i] "_Table_New.xlsx'"
df.to_excel(arg, sheet_name= list_of_tables[i], index = False)
Проблема в том, что, когда я выполняю этот цикл, аргумент to_excel (), содержащий путь, выдает ошибку: «движок не может распознать файлы .xlsx».
Error Traceback:
---------------------------------------------------------------------------
OptionError Traceback (most recent call last)
~anaconda3libsite-packagespandasioexcel_base.py in __new__(cls, path, engine, **kwargs)
632 try:
--> 633 engine = config.get_option(f"io.excel.{ext}.writer")
634 if engine == "auto":
~anaconda3libsite-packagespandas_configconfig.py in __call__(self, *args, **kwds)
232 def __call__(self, *args, **kwds):
--> 233 return self.__func__(*args, **kwds)
234
~anaconda3libsite-packagespandas_configconfig.py in _get_option(pat, silent)
104 def _get_option(pat: str, silent: bool = False):
--> 105 key = _get_single_key(pat, silent)
106
~anaconda3libsite-packagespandas_configconfig.py in _get_single_key(pat, silent)
90 _warn_if_deprecated(pat)
---> 91 raise OptionError(f"No such keys(s): {repr(pat)}")
92 if len(keys) > 1:
OptionError: 'No such keys(s): "io.excel.xlsx'.writer"'
The above exception was the direct cause of the following exception:
ValueError Traceback (most recent call last)
<ipython-input-24-ec2db8d02335> in <module>
1 arg = "r'Edited Tables/" list_of_tables[key] "_Table_New.xlsx'"
2 # print(arg)
----> 3 df.to_excel(arg, sheet_name= list_of_tables[key], index = False)
~anaconda3libsite-packagespandascoregeneric.py in to_excel(self, excel_writer, sheet_name, na_rep, float_format, columns, header, index, index_label, startrow, startcol, engine, merge_cells, encoding, inf_rep, verbose, freeze_panes)
2024 inf_rep=inf_rep,
2025 )
-> 2026 formatter.write(
2027 excel_writer,
2028 sheet_name=sheet_name,
~anaconda3libsite-packagespandasioformatsexcel.py in write(self, writer, sheet_name, startrow, startcol, freeze_panes, engine)
728 need_save = False
729 else:
--> 730 writer = ExcelWriter(stringify_path(writer), engine=engine)
731 need_save = True
732
~anaconda3libsite-packagespandasioexcel_base.py in __new__(cls, path, engine, **kwargs)
635 engine = _get_default_writer(ext)
636 except KeyError as err:
--> 637 raise ValueError(f"No engine for filetype: '{ext}'") from err
638 cls = get_writer(engine)
639
ValueError: No engine for filetype: 'xlsx''
Я попытался переключиться на формат csv, но ошибка не исчезла. Не знаю, что происходит не так. Спасибо!
Комментарии:
1. Пожалуйста, предоставьте полную информацию об ошибке.
2. Есть ли у вас необходимые библиотеки для написания файла excel, такого как xlrd или openpyxl?
3. xlrd перестал поддерживать
xlsx
файлы. Интересно, это все? Какую версию Pandas и xlrd вы используете?4. @It_is_Chris только что сделал
5. @Zev и альпарслан, может быть, глупый вопрос, но как мне проверить свои зависимости и их версии в записной книжке jupyter?
Ответ №1:
В строке arg = "r'Edited Tables/" list_of_tables[i] "_Table_New.xlsx'"
у вас есть дополнительный апостроф в конце.
Измените это на:
arg = r"Edited Tables/" list_of_tables[i] "_Table_New.xlsx"
Обратите внимание, что в сообщении об ошибке говорится ValueError: No engine for filetype: 'xlsx''
, что он не знает, как обрабатывать xlsx'
файл, но его можно было бы использовать xlsx
без завершающего апострофа.
У "r'Edited Tables/"
этой части также есть аналогичная проблема.