我有一个包含数百行的 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] 删除。
我来说两句