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

Posted

技术标签:

【中文标题】使用 Pandas 在选项卡中的单个 csv 表中添加多个 csv【英文标题】:Add multiple csv in a single csv sheet in tabs using Pandas 【发布时间】:2018-11-04 10:38:44 【问题描述】:

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

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)

【问题讨论】:

"两个新的 csv 都应该在里面的选项卡中"。你这是什么意思?喜欢 CSV 中的两张不同的工作表? 就像,我们想将两个现有的 csv 添加到选项卡中的新 csv 中。 希望这个网址能帮到你***.com/questions/29615196/… 很有用,但没有从中弄清楚。寻找熊猫解决方案。 您是否在寻找 Excel 工作簿中的“标签”?如果是这样,你不能用 CSV 来做到这一点。 【参考方案1】:

CSV 文件实际上只是一张纸。 Excel xlsx 文件虽然支持工作表。可以使用ExcelWriter 使 Pandas 直接写入 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 个字符。

【讨论】:

2个简历的excel中是否会有两个标签?我想它只有一个?抱歉问这个我在外面我只能在一段时间后测试。 每个 CSV 文件将获得一张纸。 有什么办法让工作表的名字超过 31 个字符? 这似乎是 Excel 中的一个限制。如果您的文件名较长,则至少需要改用[:31]。我已经更新了脚本。

以上是关于使用 Pandas 在选项卡中的单个 csv 表中添加多个 csv的主要内容,如果未能解决你的问题,请参考以下文章

ionic 2中多个选项卡中的单个搜索栏过滤项目

如何使用 Pandas 将多个 csv 文件中的单个数据列合并为一个?

遍历 CSV 的每一行并使用 Python-Pandas 写入文件夹中的单个 JSON 文件

有没有办法将 excel 工作簿中的单个工作表导出到使用 pandas 分隔 csv 文件?

使用分块将 CSV 文件读入 Pandas 数据帧,生成单个目标数据帧

在 ViewPager 的多个选项卡中使用单个片段