PythonCSV:合并具有相同字段的行
我试图将多行csv数据合并成一个长行,因为两个单元格包含相同的数据。例如,以以下csv为例:PythonCSV:合并具有相同字段的行,python,csv,Python,Csv,我试图将多行csv数据合并成一个长行,因为两个单元格包含相同的数据。例如,以以下csv为例: one, two, three 1, 2, 3 4, 5, 6 7, 8, 9 1, 1, 1 4, 4, 4 如果两行在第[0]行共享相同的值,我希望将第二行附加到第一行。所以我的最终产品应该是这样的: one, two, three 1, 2, 3, 1, 1, 1 4, 5, 6, 4, 4, 4 7, 8, 9 以下是我迄今为止的尝试: import csv uniqueNum = []
one, two, three
1, 2, 3
4, 5, 6
7, 8, 9
1, 1, 1
4, 4, 4
如果两行在第[0]行共享相同的值,我希望将第二行附加到第一行。所以我的最终产品应该是这样的:
one, two, three
1, 2, 3, 1, 1, 1
4, 5, 6, 4, 4, 4
7, 8, 9
以下是我迄今为止的尝试:
import csv
uniqueNum = []
uniqueMaster = []
count = -1
with open("Test.csv", "rb") as source:
reader = csv.reader(source)
header = next(reader)
for row in reader:
if row[0] not in uniqueNum:
uniqueMaster.append(row)
uniqueNum.append(row[0])
count = count + 1
for row in reader:
if row[0] in uniqueNum:
uniqueMaster[count].append(row)
with open("holding.csv","wb") as result:
writer = csv.writer(result)
writer.writerow(header)
for row in uniqueMaster:
writer.writerow(row)
我觉得一切正常,但我的脚本只输出以下内容:
one, two, three
1, 2, 3, ['1', '1', '1']
这显然是错误的,原因有二。首先,它不会遍历整个csv,其次,附加值被压缩到一个单元格中,而不是单个单元格中。如果有人有任何建议,让这项工作的权利,我会非常感谢 改用字典。从代码中间开始(假设我声明了一个名为my_dict的dict):
谢谢你的回复。这几乎做到了——行落在正确的位置,但格式不正确。例如,第一个键/值对是:
{'1':['1','2','3',['1','1','1']}
,它们应该是这样的:{'1':['1','2','3','1','1']}
。关于修复最后一部分有什么建议吗?修复了。它应该使用extend()而不是append()。有关更多信息,请参见此。具体来说,Aaron Hall给出了一个包含运行时的很好的解释。就是这样!谢谢你的字典速成班!
for row in reader:
if row[0] in my_dict.keys():
my_dict[row[0]].extend(row)
else:
my_dict[row[0]]=row
#...now we are at the bottom of your code, writing to the csv
for v in my_dict.values():
writer.writerow(v)
import csv
csv_dict = {}
with open("Test.csv", "r") as source:
reader = csv.reader(source)
header = next(reader)
for row in reader:
if row[0] in csv_dict:
csv_dict[row[0]] += row
else:
csv_dict[row[0]] = row