在 Pandas 中连接 Excel 文件表,以 CSV 格式每 1 行将大型 Pandas 数据框导出到新的 Excel 文件。自动化?

Posted

技术标签:

【中文标题】在 Pandas 中连接 Excel 文件表,以 CSV 格式每 1 行将大型 Pandas 数据框导出到新的 Excel 文件。自动化?【英文标题】:Concatenate Excel File Sheets in Pandas, Exporting Large Pandas Data Frame to new Excel files every 1 mill rows in CSV format. Automation? 【发布时间】:2021-12-23 15:44:38 【问题描述】:

我有一个包含多张工作表的 excel 文件。我正在尝试将所有工作表放入一个文件中。因此,首先我将文件读入 Jupyter Notebook 并将工作表连接到 1 个数据框中。看起来 .to_excel 方法可以制作单个 excel 文件。

如何让 pandas 将其导出为 CSV 而不是 xlsx?另外,有没有办法让它在第 100 万行中断并为接下来的 100 万行开始一个新的 Excel 文件(因为 Excel 有行限制)?

另外一点,想知道如何自动化这个过程?我假设一个 for 循环将是我想要完全用于该过程的函数。

最后,将其保存在 xlsx 文件中不允许我打开该文件。此外,当我将其转换为 csv 时,它会返回与我的文件完全不同的乱码。

我目前的代码:

pip install pandas
import pandas as pd

Pipeline_df = pd.concat(pd.read_excel('PandasToExcel.xlsx', sheet_name = None), ignore_index = True)
Pipeline_writer = pd.ExcelWriter('Pipeline_output.xlsx', engine = 'xlsxwriter')
Pipeline_writer.save()

【问题讨论】:

请提供足够的代码,以便其他人更好地理解或重现问题。 【参考方案1】:

Yo 可以直接使用 to_csv 并计算要写入的块。可能已经有这个库了,但是我用过这个。

import math
df = pd.DataFrame('dataseet':range(1,1000500))

num_rows = df.shape[0]
chunk_size = 1000000
chunks = math.ceil(num_rows / chunk_size)

for i in range(chunks):
    dftowrite = df[chunk_size*i : chunk_size*(i+1)]
    dftowrite.to_csv('filechunk_.csv'.format(i))

【讨论】:

此代码有效,但文件输出只是从 1 到 100 万的单行。我需要获取我拥有的 xlsx 文件。连接该文件中的工作表并将它们导出到新的 csv 文件。但由于 Excel 的限制,一次需要 100 万多行数据。我一定在这里遗漏了一些东西。我必须承认我对 Python 的了解不够,无法解释您的代码。 你说你有一个连接的数据框???只需使用您的 df 而不是提供的示例(因为我无权访问您的数据进行测试)。 好的,我这样做了:df1 = pd.DataFrame(new_df[0:1000000]) df2 = pd.DataFrame(new_df[1000001:1016385]) df1.to_csv('new_example', index =假) df2.to_csv('new_example2', index = False) 。输出被乱码乱码。因此,转到存储文件的位置(C 驱动器)并在记事本中“打开”。将记事本保存为 CSV。现在关心的是如何让它自动化?获取 Excel 文件、将工作表连接到 DF、将连接的 DF 导出到 CSV 的函数。在 1milli 行处,一个新的 CSV 开始 如果您不知道如何读取 excel 文件并连接 df,那么您应该提出一个新问题。打开 csv 时出现问题:您没有将 .csv 放在文件名中。我一般建议您花一些时间搜索 *** 以满足您的需求。你问的每件事都有几个相似的例子。 有字符限制。作为一个新手,试图解释所有细节是很困难的。但是,我已经简化了我的问题。此时,我只需要构建函数来执行我的工作。现在我可以读取和连接我的 Excel 文件的工作表。然后,我可以将 concat 文件拆分为多个 df 100 万。然后,将 df 转换为 CSV。但是,当我将其放入函数时,由于函数参数中的错误,它无法正常工作。这是我的功能: defautomated_excel(excel_automated): 我尝试输入 (excel_auto.xlsx) 甚至使用 " " 并且它被标记

以上是关于在 Pandas 中连接 Excel 文件表,以 CSV 格式每 1 行将大型 Pandas 数据框导出到新的 Excel 文件。自动化?的主要内容,如果未能解决你的问题,请参考以下文章

Pandas 可以在不修改文件其余部分的情况下读取和修改单个 Excel 文件工作表(选项卡)吗?

如何使用 Pandas 在现有的 excel 文件中保存新工作表?

在 pandas 数据框中转换具有许多工作表(在 shett 名称中带有空格)的 excel 文件

Python Pandas - 如何在 Excel 工作表的特定列中写入

使用 python/pandas 在 excel 上创建颜色渐变的最简单方法?

将多个工作表与列连接在一起作为工作表名称