Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:循环浏览excel工作表并写入csv_Python_Python 3.x - Fatal编程技术网

Python:循环浏览excel工作表并写入csv

Python:循环浏览excel工作表并写入csv,python,python-3.x,Python,Python 3.x,我有一个非常大的数据集(>100gb)。它有许多excel文件(.xlsx)。每个xlsx文件都有许多工作表。每张表中的数据如下图所示 我想将这些图纸合并为csv文件,并将此宽格式更改为长格式,以便: 第一列包含excel文件名 第二列包含图纸的名称 第三、第四和第五列是上图中的“股票代码”、“名称”、“详细信息保持类型”列 第六列是“日期”(第一行),并且 最后一列包含数字 最有效的方法是什么?我有代码在文件和工作表中循环,但无法将(宽)数据转换为我所追求的长格式。下面是我的循环尝试: im

我有一个非常大的数据集(>100gb)。它有许多excel文件(.xlsx)。每个xlsx文件都有许多工作表。每张表中的数据如下图所示

我想将这些图纸合并为csv文件,并将此宽格式更改为长格式,以便:

  • 第一列包含excel文件名
  • 第二列包含图纸的名称
  • 第三、第四和第五列是上图中的“股票代码”、“名称”、“详细信息保持类型”列
  • 第六列是“日期”(第一行),并且
  • 最后一列包含数字 最有效的方法是什么?我有代码在文件和工作表中循环,但无法将(宽)数据转换为我所追求的长格式。下面是我的循环尝试:

    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():
    

    一步一步地进行(请记住,为了使过程尽可能快,您必须尽可能多地使用本机python,并且只有在绝对必要时才使用其他库): 因此,您希望从所有这些工作表中获得一个csv文件。您应该做的是,首先为所有图纸中的所有行创建一个2D
    列表
    ,然后使用pandas库使用
    Dataframe
    类将它们导入csv文件:

    import pandas as pd
    my_list = [...] # your 2D list containing the rows
    dataset= pd.DataFrame(my_list, columns=['column1','column2', '...') # the name of your columns
    dataset.to_csv('/PATH/file.csv')
    

    一步一步地进行(请记住,为了使过程尽可能快,您必须尽可能多地使用本机python,并且只有在绝对必要时才使用其他库): 因此,您希望从所有这些工作表中获得一个csv文件。您应该做的是,首先为所有图纸中的所有行创建一个2D
    列表
    ,然后使用pandas库使用
    Dataframe
    类将它们导入csv文件:

    import pandas as pd
    my_list = [...] # your 2D list containing the rows
    dataset= pd.DataFrame(my_list, columns=['column1','column2', '...') # the name of your columns
    dataset.to_csv('/PATH/file.csv')
    

    这是一个非常(可能过于)宽泛的问题,所以你可能不会得到你所希望的答案。您几乎已经编写好了伪代码:对于每个xlsx文件:打开文件,提取所需的列,并另存为csv。对于大型数据集,您可能想考虑保存到数据库而不是CSV。是的,但是我需要CSV格式,这样我就可以导入SAS。这是一个非常(可能过于)宽泛的问题,所以你可能不会得到你所希望的答案。您几乎已经编写好了伪代码:对于每个xlsx文件:打开文件,提取所需的列,并另存为csv。对于大型数据集,您可能想考虑保存到数据库而不是CSV。是的,但是我需要CSV格式,这样我就可以导入SAS。这篇文章经过编辑缩小了问题的范围谢谢你的回复。我不想做计算,所以我认为使用dataframe需要更长的时间。我只是简单地读入一些数据并将其作为csv写出来。我通过文件、表格、行和列的循环来完成这一任务谢谢你的回复。我不想做计算,所以我认为使用dataframe需要更长的时间。我只是简单地读入一些数据并将其作为csv写出来。我通过文件、工作表、行和列的一些循环来完成这项工作