gpt4 book ai didi

python csv : merge rows with same field

转载 作者:太空宇宙 更新时间:2023-11-04 00:43:59 24 4
gpt4 key购买 nike

我正在尝试将多行 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 = []
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 的字典):

 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)

关于 python csv : merge rows with same field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40620598/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com