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

时间:2018-05-25 05:45:10

标签: python excel python-3.x pandas csv

我有多个csv文件,比如a.csv,b.csv。我想在新的c.csv中同时使用a.csv和b.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 个答案:

答案 0 :(得分:1)

CSV文件实际上只是一张纸。 Excel [{1}}文件虽然支持工作表。可以使用xlsx将Pandas直接写入Excel文件。像下面这样的东西应该做你需要的:

ExcelWriter

对于文件夹中找到的每个CSV文件,都会创建一个新的Excel工作表。工作表的名称是CSV文件的名称,例如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() 的工作表名称为a.csv

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