【问题标题】:Create Multiple .json Files from an Excel file with multiple sheets using Pandas使用 Pandas 从包含多个工作表的 Excel 文件创建多个 .json 文件
【发布时间】:2020-07-17 07:44:15
【问题描述】:

我正在尝试将大量带有多张工作表的 Excel 文件(其中一些也很大)转换为 .json 文件。所以我创建了一个包含工作表名称的列表,然后创建了一个循环来为每个工作表创建一个数据框,然后我将此数据框写入一个 .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 命令时,它可以正常工作,但我需要循环执行此操作

【问题讨论】:

    标签: json excel pandas


    【解决方案1】:

    导入numpy。声明一个空的numpy 数组out_array。然后,给定路径列表paths,对于paths中的每个路径,将文件读入临时数据帧temp_df,使用.values()方法获取临时数据帧的值,将值存储到一个临时的numpy 数组,temp_array,使用numpy.concatenate 连接out_arraytemp_array

    一旦此循环完成该过程,使用pandas.DataFrameout_array 转换为数据帧out_df。最后,为您的新数据框设置列名。

    【讨论】:

    • 很抱歉,但我不明白这对我有什么帮助。每个文件都有多个工作表,每个工作表都有多个列,因此我需要为每个文件和每个数据框编写多个数据框,并将其写入 .json 文件中。从我能理解的你的提议中,我将处理整个文件,而不是处理我不能或需要做的每个工作表。如果您可以发送一个示例将有很大帮助。无论如何,非常感谢您花时间给我答复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    • 2016-08-13
    • 2010-11-15
    • 1970-01-01
    • 2021-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多