如何在Python中将多个文本文件合并到一个csv文件中

2024-04-23 18:09:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将200个文本文件转换为csv文件。我使用下面的代码,我可以运行它,但它不会产生csv文件。有人能告诉我一个简单快捷的方法吗?非常感谢

dirpath = 'C:\Files\Code\Analysis\Input\qobs_RR1\\'
output = 'C:\Files\Code\Analysis\output\qobs_CSV.csv'
csvout = pd.DataFrame()
files = os.listdir(dirpath)

for filename in files:
    data = pd.read_csv(filename, sep=':', index_col=0, header=None)
    csvout = csvout.append(data)

csvout.to_csv(output)

Tags: 文件csv代码outputdatacodeanalysisfiles
1条回答
网友
1楼 · 发布于 2024-04-23 18:09:46

问题是os.listdir提供的是dirpath中的文件名列表,而不是这些文件的完整路径。通过使用os.path.join函数将dirpath前置到文件名,可以获得完整路径

import os
import pandas as pd

dirpath = 'C:\Files\Code\Analysis\Input\qobs_RR1\\'
output = 'C:\Files\Code\Analysis\output\qobs_CSV.csv'
csvout_lst = []
files = [os.path.join(dirpath, fname) for fname in os.listdir(dirpath)]

for filename in sorted(files):
    data = pd.read_csv(filename, sep=':', index_col=0, header=None)
    csvout_lst.append(data)

pd.concat(csvout_lst).to_csv(output)

编辑:这可以通过一行完成:

pd.concat(
    pd.read_csv(os.path.join(dirpath, fname), sep=':', index_col=0, header=None)
    for fname in sorted(os.listdir(dirpath))
).to_csv(output)

编辑2:更新了答案,因此文件列表按字母顺序排序

相关问题 更多 >