Python 3.x python将文件夹中的CSV文件追加到一个大文件中

Python 3.x python将文件夹中的CSV文件追加到一个大文件中,python-3.x,pandas,csv,Python 3.x,Pandas,Csv,我对熊猫图书馆有点困惑,非常感谢你的帮助 任务是将文件夹中的所有*.csv文件合并为一个大文件。 CSV文件没有标题,所以我只想附加所有文件,并在最后添加标题 这是我使用的代码。 最后一个文件是“ALBERTA GENERAL”,在开始创建更新版本之前,我删除了旧文件 os.chdir(dataFolder) with io.open("ALBERTA GENERAL.csv", "w+", encoding='utf8') as f: os.remove("ALBERTA GENERAL.cs

我对熊猫图书馆有点困惑,非常感谢你的帮助

任务是将文件夹中的所有*.csv文件合并为一个大文件。 CSV文件没有标题,所以我只想附加所有文件,并在最后添加标题

这是我使用的代码。 最后一个文件是“ALBERTA GENERAL”,在开始创建更新版本之前,我删除了旧文件

os.chdir(dataFolder)
with io.open("ALBERTA GENERAL.csv", "w+", encoding='utf8') as f:
os.remove("ALBERTA GENERAL.csv")
extension = 'csv'
all_filenames = [i for i in glob.glob('*.{}'.format(extension))]

combined_csv = pd.concat([pd.read_csv(f, error_bad_lines=False) for f in all_filenames], axis=0, ignore_index = True)
print(combined_csv)

with io.open('ALBERTA GENERAL.csv', "w+", encoding='utf8') as outcsv:
    writer = csv.DictWriter(outcsv, fieldnames=["Brand, Name, Strain, Genre, Product type, Date"],delimiter=";")
    writer.writeheader()

    combined_csv.to_csv(outcsv, index=False, encoding='utf-8-sig')
但我得到了一个令人困惑的结果,我不知道如何解决。 最终文件不会将中间文件一个接一个地追加,但会为下一个文件添加列。我试图向中间文件添加相同的标题,但没有帮助

除此之外,标题不按列分割,而是识别为一行

有人能帮我修改代码吗


以下是

仅修复第一个文件的不规则之处:

with open('ALBERTA GENERAL.csv','r') as f_in, open('ALBERTA GENERAL_fixed.csv','w') as f_out: 
    for line in f_in: 
        line = line.replace(',',';') 
        line = line.strip().rstrip(';') 
        line = line.strip().lstrip(';') 
        f_out.write(line + '\n') 

os.remove('ALBERTA_GENERAL.csv')
我们将单独导入第一个文件,因为它与其他文件有不同的要求:

df1 = pd.read_csv('ALBERTA GENERAL_fixed.csv',header=0,sep=';')
然后我们可以做另外两件事:

df2 = pd.read_csv('file_ALBERTA_05.14.2020.csv',header=None,sep=';')
df3 = pd.read_csv('file_ALBERTA_05.18.2020.csv',header=None,sep=';')

df2.columns = df1.columns
df3.columns = df1.columns
最后步骤:

combined = pd.concat([df1,df2,df3])
combined.to_csv('out.csv',index=False)

你的文件不规则。你能控制他们的产量吗?嗨,你是说“机械肉”的标志吗?这些是我的文件的例子。完整文件包含带有许多逗号的文本数据,这就是为什么我需要使用“;”作为分隔符。我看到您使用的是
作为字段分隔符,没关系。但是
ALBERTA GENERAL.csv
是最有问题的文件。它有一些
在行首和行尾。是的,我可以更改这些文件的输出,它们是在进入合并阶段之前由我创建的。这个ALBERTA_常规文件是根据其他2个文件自动创建的,它的行为非常奇怪。标题后的第一行是从两个文件的第一行创建的,然后从第二行开始仅显示第一个文件。只有当第一个文件结束时,它才会从下一列开始显示第二个文件。