我有多个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)
答案 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个字符。