Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.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_Excel_Pandas_Csv - Fatal编程技术网

Python 如何在excel中为文件夹中的每个csv文件创建新工作表

Python 如何在excel中为文件夹中的每个csv文件创建新工作表,python,excel,pandas,csv,Python,Excel,Pandas,Csv,目前,它会覆盖每个excel文件工作表,但我希望每个CSV文件在excel上创建一个新工作表。它会重新写入现有的excel文件,因为excel Writer是在循环中定义的。通过在循环外部定义excel,您只需创建一次excel,并应使用循环向其中添加图纸。下面的代码对我有用 import os import pandas as pd from glob import glob import pathlib import fileinput import sys import xlsxwrite

目前,它会覆盖每个excel文件工作表,但我希望每个CSV文件在excel上创建一个新工作表。它会重新写入现有的excel文件,因为excel Writer是在循环中定义的。通过在循环外部定义excel,您只需创建一次excel,并应使用循环向其中添加图纸。下面的代码对我有用

import os
import pandas as pd
from glob import glob
import pathlib
import fileinput
import sys
import xlsxwriter

def csv_folder_input(folder):
    path = sys.path[0]
    path = path + "/" + folder
    os.chdir(path)
    counter = 1
    for filename in os.listdir(path):
        if filename.endswith(".csv"):
            with open(filename, 'r') as csvfile:
                df = pd.DataFrame(csvfile)
                with pd.ExcelWriter('output.xlsx') as writer:
                    df.to_excel(writer, sheet_name='sheet '+str(counter), index=False)
                    writer.save()
                    counter = counter + 1
我刚刚修改了你的函数。请注意,要将数据帧读入csv, pd.read_csv()是函数

您使用了pd.DataFrame(csv_文件),我认为这是不正确的读取方式

您将在与文件夹相同的路径中找到output.xlsx

def csv_folder_input(folder):
path = sys.path[0]
path = path + "/" + folder
os.chdir(path)
counter = 1
with pd.ExcelWriter('output.xlsx') as writer:
    for filename in os.listdir(path):
        if filename.endswith(".csv"):
            with open(filename, 'r') as csvfile:
                df = pd.DataFrame(csvfile)
            df.to_excel(writer, sheet_name=filename, index=False)
            print(f"Added sheet to excel: {filename}")
            counter = counter + 1
writer.save()
writer.close() 

  
def csv_folder_input(folder):
    path = sys.path[0]
    path = os.path.join(path,folder)
    os.chdir(path)
    counter=1
    writer = pd.ExcelWriter('output.xlsx')
    for filename in os.listdir(path):
        if filename.endswith(".csv"):
            print(filename)
        with open(filename, 'r') as csvfile:
            counter=counter+1
            print(counter)
            df = pd.read_csv(csvfile)
            df.to_excel(writer,sheet_name=os.path.splitext(filename)[0]+'_'+str(counter),index=False)
    writer.save()
    writer.close()