当前位置: 首页 > 知识库问答 >
问题:

使用Pandas在选项卡中的单个csv工作表中添加多个csv

华善
2023-03-14

我有多个csv文件,比如说a.csv,b.csv。我希望a.csv和b.csv都在一个新的c.csv中。两个新的csv都应该在选项卡中。我只想在选项卡中添加两个csv。在熊猫中有没有什么捷径。我有下面的代码,但它没有给出任何输出,无论它如何执行。尝试在stackoverflow中检查几个帖子,但不知何故我没有得到想要的输出。请帮助我一些更好的解决方案。

folders=next(os.walk('.'))[1]
for host in folders:
    Path=os.path.join(os.getcwd(),host)                    
    all_files = glob.glob(os.path.join(Path, "*.csv"))     
    df_from_each_file = (pd.read_csv(f) for f in all_files)
    df   = pd.concat(df_from_each_file, ignore_index=True)
    df.to_csv('c.csv,' index=False)

共有1个答案

陈琪
2023-03-14

CSV文件实际上只是一张纸。Excel xlsx文件支持工作表。熊猫可以使用ExcelWriter直接写入Excel文件。以下内容应满足您的需要:

import pandas as pd
import xlsxwriter
import glob
import os

writer = pd.ExcelWriter('multi_sheet.xlsx', engine='xlsxwriter')
folders = next(os.walk('.'))[1]

for host in folders:
    Path = os.path.join(os.getcwd(), host)

    for f in glob.glob(os.path.join(Path, "*.csv")):
        print(f)
        df = pd.read_csv(f)
        df.to_excel(writer, sheet_name=os.path.basename(f)[:31])

writer.save()

对于在您的文件夹中找到的每个CSV文件,将创建一个新的Excel工作表。工作表的名称是CSV文件的名称,例如a.csv将具有工作表名称a

注意:Excel对工作表名称的限制为31个字符。

 类似资料:
  • 我正在创建一个“主”谷歌工作表的基础上的谷歌工作表文件文件夹(目前6个文件)。每个工作表的选项卡数量略有不同(有些名称略有不同),但我想循环一个公式以获取每个工作表文件中每个选项卡的值。(例如,fileA有3个选项卡,我想从每个选项卡中获取数据,并在fileB中重复类似的操作,fileB有4个选项卡)。我还想跳过几个命名选项卡。 下面是我的一段代码(2个交错函数): 但是,这只是从每个文件中的一个

  • 我有30张单独的工作表,需要合并成一张有多个选项卡的工作表。我可以使用下面的脚本来完成这项工作,但每次都会创建一个新的工作表。当30张单独的工作表中的一张或全部更新时,我只希望这个脚本更新或重写以前创建的“主工作表”。 我正在寻找一个表,其中包含从每个地区的标签。这将允许我与单独更新的所有信息共享一个主控表。

  • 我试图概念化我的结构和值,以组织表单中的多个表中的表单响应基于我的表单问题响应之一(更改的位置)选择的值。我有一个清单,到目前为止完成如下。我还列出了额外的步骤,以及我认为我需要创造什么来实现我想要的。有人能指导我指出我可能存在的问题或更好的方法吗? 打开表格-已完成 打开电子表格-已完成 Form将正确格式的响应保存到电子表格-已完成 设置对变量的表单响应-完成 将表单问题设置为变量-已完成 在

  • 问题内容: 我正在使用superCSV在我的代码中以csv格式写入数据。它的工作绝对很好而且非常有效,但是现在我的要求改变了。我需要在单个xls文件中写多个工作表,这是非常耗时的任务。因此,supercsv中有什么方法可以将多个工作表数据写入单个csv文件并将其发送给客户端,以便当客户端在MS- Excel中打开此csv文件时,他可以看到多个工作表,而不是由我生成具有多个工作表的excel文件,并

  • 我有一个多标签谷歌表。第一个是主表,我有一些基本的位置信息。在其他页面中,我通过“导入”传输这些基本信息,因此我有一些列动态更改,一些是静态的,用户可以更新。尽管如此,如果我在主工作表的数据之间添加一行,它只会更改动态列(从importrange更新),而其余列不会更改-这会影响更新。在主工作表中添加行时,是否有任何方法/脚本可以自动在其他工作表中添加行?