使用python从主csv文件创建许多csv文件

马刺

我有一个包含数百行的 csv 文件,我想创建与列中的数据组一样多的 csv 文件。例如,我有以下 csv:

title; data; value
morado; paste1; 002
morado; paste2; 004
rojo; paste1; 008
amarillo; paste1; 112
amarillo; paste2; 002
rojo ; paste2; 010

我的数据组将是“标题”列。所以最终结果将是三个不同的 csv 文件(morado.csv、rojo.csv 和 amarillo.csv):

title; data; value
morado; paste1; 002
morado; paste2; 004

title; data; value
rojo; paste1; 00
rojo ; paste2; 010

title; data; value
amarillo; paste1; 112
amarillo; paste2; 002

什么是自动方式来做到这一点?

谢谢。

马丁·埃文斯

这可以使用 adefaultdict(list)来累积包含相同的所有条目title

from collections import defaultdict
import csv

data = defaultdict(list)

with open('input.csv', 'rb') as f_input:
    csv_input = csv.reader(f_input, delimiter=';', skipinitialspace=True)
    header = next(csv_input)

    for row in csv_input:
        data[row[0].strip()].append(row)

for title, entries in data.items():
    with open("{}.csv".format(title), 'wb') as f_output:
        csv_output = csv.writer(f_output, delimiter=';')
        csv_output.writerow(header)
        csv_output.writerows(entries)

每行存储在一个defaultdict(list). 这允许您使用 将整行title作为字典的键。在您的示例中,您有两组行,rojo因此有必要在尝试开始将它们写入文件之前存储所有条目。

标题被存储并用于每个新创建的 CSV 文件。由于data包含行列表,该writerows()函数可用于在一次调用中保存所有条目。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章