为了账号安全,请及时绑定邮箱和手机立即绑定

如何附加多个 CSV 文件并在 Python 中添加指示文件名的附加列?

如何附加多个 CSV 文件并在 Python 中添加指示文件名的附加列?

守着星空守着你 2021-10-10 16:30:27
我在一个文件夹中有 20 多个 CSV 文件。所有文件都具有相同的结构,它们只是代表不同的日子。例子:Day01.csvDay02.csvDay03.csvDay04.csv(等等...)这些文件只包含两个数字列:x 和 y。我想将所有这些 csv 文件一起附加到一个大文件中,并为文件名(天)添加一列。我探索了类似的示例来生成以下代码,但此代码将每个 y 添加到单独的列(Y1、Y2、Y3、Y4...等)。我只想将此附加文件作为三列:x,y,文件名。如何修改代码以进行正确的追加?我已经尝试过这个例子中的代码:Read multiple csv files and Add filename as new column in pandasimport pandas as pdimport osos.chdir('C:....path to my folder')files = os.listdir()df = pd.concat([pd.read_csv(fp).assign(New=os.path.basename(fp)) for fp in files])但是,此代码不会将所有 Y 值附加到一列下。(然而,所有其他方面似乎都有效)。有人可以帮助编写代码,以便所有 Y 值都在一个列下吗?
查看完整描述

2 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

python 擅长这些简单的任务,几乎好得令人难以置信……


fake_files = lambda n: '\n'.join(('%d\t%d'%(i, i+1) for i in range(n, n+3)))


file_name = 'fake_me%s.csv'


with open('my_new.csv', 'wt') as new:

    for number in range(3): # os.listdir()

#        with open(number) as to_add:

#            rows = to_add.readlines()

            rows_fake = fake_files(number*2).split('\n')

            adjusted_rows = [file_name%number + '\t' + row for row in rows_fake]

            new.write('\n'.join(adjusted_rows) + '\n')

调整您的特定 io 和命名,这就是您所需要的。你可以复制代码并运行它并研究它是如何工作的。


查看完整回答
反对 回复 2021-10-10
  • 2 回答
  • 0 关注
  • 251 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信