Python 3.x python将文件夹中的CSV文件追加到一个大文件中
我对熊猫图书馆有点困惑,非常感谢你的帮助 任务是将文件夹中的所有*.csv文件合并为一个大文件。 CSV文件没有标题,所以我只想附加所有文件,并在最后添加标题 这是我使用的代码。 最后一个文件是“ALBERTA GENERAL”,在开始创建更新版本之前,我删除了旧文件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
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个文件自动创建的,它的行为非常奇怪。标题后的第一行是从两个文件的第一行创建的,然后从第二行开始仅显示第一个文件。只有当第一个文件结束时,它才会从下一列开始显示第二个文件。