Создать несколько. json файлов из файла Excel с несколькими листами, используя Pandas - PullRequest
0 голосов
/ 05 апреля 2020

Я пытаюсь преобразовать очень большое количество файлов Excel с несколькими листами (некоторые из них также очень большие) в json файлы. Поэтому я создал список с именами листов и затем создал al oop, чтобы создать фрейм данных для каждого листа, а затем записал этот фрейм данных в файл. json. Мой код:

from zipfile import ZipFile
from bs4 import BeautifulSoup
import pandas as pd

file = 'filename.xlsx'

with ZipFile(file) as zipped_file:
    summary = zipped_file.open(r'xl/workbook.xml').read()
soup = BeautifulSoup(summary, "xml")
sheets = [sheet.get("name") for sheet in soup.find_all("sheet")]

for i in sheets:
    df = pd.read_excel(file, sheet_name = i, index = False, header = 1)
    json_file = df.to_json(("{}.json").format(i))

Этот код работает как шарм, когда листы не очень большие. Когда я запускаю его для файла Excel, он работает и создает файлы json, которые мне нужны, вплоть до того, что он находит очень большой лист с большим количеством данных и вылетает. Поэтому мой вопрос: есть ли другой, более эффективный способ сделать это без сбоя программы. Когда я запускаю команду df = pd.read_excel отдельно для каждого листа, она работает без проблем, но мне нужно, чтобы это произошло в al oop

1 Ответ

0 голосов
/ 05 апреля 2020

Импорт numpy. Объявите пустой массив numpy, out_array. Затем, учитывая список путей, paths, для каждого пути в paths, считайте файл во временный фрейм данных, temp_df, получите значения временного фрейма, используя метод .values(), сохраните значения в временный массив numpy, temp_array, объединение out_array и temp_array с использованием numpy.concatenate.

Как только l oop завершит процесс, преобразуйте out_array в фрейм данных out_df, используя pandas.DataFrame. И, наконец, задайте имена столбцов для нового кадра данных.

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