【问题标题】:Combine columns from several CSV files into a single file and making multiple CSV file with for loop将多个 CSV 文件中的列合并到一个文件中,并使用 for 循环制作多个 CSV 文件
【发布时间】:2019-06-18 19:05:14
【问题描述】:

我有 14 个 CSV 文件,每个文件有 100 列,我想做的是从每个文件中提取第一列并将其复制到单个 csv 文件中。我必须为每 100 列执行此操作(例如,下一步是将每个文件中的第二列放入 csv 文件中)。

我之前尝试过的是下面的代码,它非常适合提取一列,但我想把它放在一个循环中,这样我就可以一次得到 100 个文件,我该怎么做?

import csv
import itertools as IT

filenames = ['Sul-v1.csv', 'Sul-v2.csv','Sul-v3.csv', 'Sul-v4.csv', 'Sul-v5.csv', 'Sul-v6.csv', 'Sul-v7.csv', 'Sul-v8.csv', 'Sul-v9.csv', 'Sul-v10.csv', 'Sul-v11.csv', 'Sul-v12.csv', 'Sul-v13.csv', 'Sul-v14.csv']
handles = [open(filename, 'rb') for filename in filenames]    
readers = [csv.reader(f, delimiter=',') for f in handles]

with  open('combined.csv', 'wb') as h:
    writer = csv.writer(h, delimiter=',', lineterminator='\n', )
    for rows in IT.izip_longest(*readers, fillvalue=['']*2):
        combined_row = []
        for row in rows:
            row = row[:1] # select the columns you want
            if len(row) == 1:
                combined_row.extend(row)
            else:
                combined.extend(['']*2)
        writer.writerow(combined_row)

for f in handles:
    f.close()

提前致谢!

【问题讨论】:

    标签: python loops csv


    【解决方案1】:

    使用熊猫。

    首先将所有 csv 文件加载到一个日期帧中。 (见here

    接下来,通过遍历列并使用 to_csv 将每一列保存到一个新的 csv 中。

    确保使用“columns”参数将列传递给“to_csv”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-11
      • 1970-01-01
      • 2014-05-17
      • 1970-01-01
      • 1970-01-01
      • 2017-08-17
      相关资源
      最近更新 更多