gpt4 book ai didi

python - 如何合并两个csv文件?

转载 作者:行者123 更新时间:2023-11-28 21:24:01 24 4
gpt4 key购买 nike

我有两个这样的 csv 文件

"id","h1","h2","h3", ...
"1","blah","blahla"
"4","bleh","bleah"

我想合并这两个文件,这样如果两个文件中的 ID 相同,则该行的值应该来自第二个文件。如果它们具有不同的 ID,则合并后的文件应包含这两行。


有些值有逗号

"54","34,2,3","blah"

最佳答案

res = {}

a=open('a.csv')
for line in a:
(id, rest) = line.split(',', 1)
res[id] = rest
a.close()

b=open('b.csv')
for line in b:
(id, rest) = line.split(',', 1)
res[id] = rest
b.close()

c=open('c.csv', 'w')
for id, rest in res.items():
f.write(id+","+rest)
f.close()

基本上,您使用每行的第一列作为字典 res 中的键。因为 b.csv 是第二个文件,所以第一个文件 (a.csv) 中已经存在的 key 将被覆盖。最后,您在输出文件 c.csv 中再次将 keyrest 合并在一起。

标题行也将从第二个文件中获取,但我猜这些应该没有什么不同。

编辑:一个略有不同的解决方案,合并任意数量的文件并按顺序输出行:

res = {}
files_to_merge = ['a.csv', 'b.csv']
for filename in files_to_merge:
f=open(filename)
for line in f:
(id, rest) = line.split(',', 1)
if rest[-1] != '\n': #last line may be missing a newline
rest = rest + '\n'
res[id] = rest
f.close()

f=open('c.csv', 'w')
f.write("\"id\","+res["\"id\""])
del res["\"id\""]
for id, rest in sorted(res.iteritems()):
f.write(id+","+rest)
f.close()

关于python - 如何合并两个csv文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16563317/

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