gpt4 book ai didi

Python加入csv文件,其中键是第一列值

转载 作者:太空狗 更新时间:2023-10-29 21:03:31 26 4
gpt4 key购买 nike

我尝试加入两个 csv 文件,其中键是第一列的值。没有标题。
文件具有不同的行数和行数。
必须保留文件 a 的顺序。

文件:

john,red,34
andrew,green,18
tonny,black,50
jack,yellow,27
phill,orange,45
kurt,blue,29
mike,pink,61

文件 b:

tonny,driver,new york
phill,scientist,boston

期望的结果:

john,red,34
andrew,green,18
tonny,black,50,driver,new york
jack,yellow,27
phill,orange,45,scientist,boston
kurt,blue,29
mike,pink,61

我检查了所有相关的线程,我相信你们中的一些人会把这个问题标记为重复,但我只是还没有找到解决方案。

我抓取了基于字典的解决方案,但这种方法无法处理保留文件“a”中的行顺序的情况。

import csv
from collections import defaultdict

with open('a.csv') as f:
r = csv.reader(f, delimiter=',')
dict1 = {}
for row in r:
dict1.update({row[0]: row[1:]})

with open('b.csv') as f:
r = csv.reader(f, delimiter=',')
dict2 = {}
for row in r:
dict2.update({row[0]: row[1:]})

result = defaultdict(list)

for d in (dict1, dict2):
for key, value in d.iteritems():
result[key].append(value)

我也想避免将这些 csv 文件放入数据库,如 sqlite 或使用 pandas 模块。

提前致谢

最佳答案

有点像

import csv
from collections import OrderedDict

with open('b.csv', 'rb') as f:
r = csv.reader(f)
dict2 = {row[0]: row[1:] for row in r}

with open('a.csv', 'rb') as f:
r = csv.reader(f)
dict1 = OrderedDict((row[0], row[1:]) for row in r)

result = OrderedDict()
for d in (dict1, dict2):
for key, value in d.iteritems():
result.setdefault(key, []).extend(value)

with open('ab_combined.csv', 'wb') as f:
w = csv.writer(f)
for key, value in result.iteritems():
w.writerow([key] + value)

产生

john,red,34
andrew,green,18
tonny,black,50,driver,new york
jack,yellow,27
phill,orange,45,scientist,boston
kurt,blue,29
mike,pink,61

(请注意,我没有费心防止 dict2 的 key 不在 dict1 中的情况——如果您愿意,可以轻松添加。)

关于Python加入csv文件,其中键是第一列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20414562/

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