【发布时间】:2020-05-21 01:32:36
【问题描述】:
我有一个非常大的数据集 (>100gb)。它有许多 excel 文件 (.xlsx)。每个 xlsx 文件都有许多工作表。每张表中的数据如下图所示。
我想将这些工作表合并成一个 csv 文件,并将这种宽格式更改为长格式,以便:
- 第一列包含excel文件名,
- 第二列包含工作表的名称,
- 第三、四、五为上图中的“ticker”、“Name”、“Detail Holding Type”列,
- 第六列是“日期”(第一行),
- 最后一列包含数字。
最有效的方法是什么?我有循环文件和工作表的代码,但无法将(宽)数据转换为我所追求的长格式。以下是我的循环尝试:
import csv
from os import listdir
from os.path import isfile, join
mypath = "E:/data_download/Python_test_files/"
file_lists = [f for f in listdir(mypath) if isfile(join(mypath, f))]
import xlrd
for file in file_lists:
book = xlrd.open_workbook(f'{mypath}{file}')
sheet_names = book.sheet_names()
print(sheet_names)
for sheet in book.sheets():
for row in sheet.get_rows():
【问题讨论】:
-
这是一个非常(可能过于)广泛的问题,因此您可能不会得到您希望的答案。您几乎已经编写了伪代码:对于每个 xlsx 文件:打开文件,提取所需的列,然后保存为 csv。对于大型数据集,您可能需要考虑保存到数据库而不是 csv。
-
是的,但我需要 csv 格式,以便可以导入 SAS。编辑帖子以缩小问题范围
标签: python python-3.x