gpt4 book ai didi

python - 将多个 CSV 文件合并为一个文件

转载 作者:行者123 更新时间:2023-11-30 23:34:53 26 4
gpt4 key购买 nike

我有 CSV 文件,其中数据的格式如下:

文件1.csv

ID,NAME
001,Jhon
002,Doe

fille2.csv

ID,SCHOOLS_ATTENDED
001,my Nice School
002,His lovely school

file3.csv

ID,SALARY
001,25
002,40

ID字段是一种用于获取记录的主键。

读取 3 到 4 个文件并获取相应数据并存储在另一个具有标题(ID、NAME、SCHOOLS_ATTENDED、SALARY)的 CSV 文件中的最有效方法是什么?

文件大小为数百 MB(100、200 Mb)。

最佳答案

数百兆字节并不算多。为什么不采用简单的方法使用 csv modulecollections.defaultdict :

import csv
from collections import defaultdict

result = defaultdict(dict)
fieldnames = {"ID"}

for csvfile in ("file1.csv", "file2.csv", "file3.csv"):
with open(csvfile, newline="") as infile:
reader = csv.DictReader(infile)
for row in reader:
id = row.pop("ID")
for key in row:
fieldnames.add(key) # wasteful, but I don't care enough
result[id][key] = row[key]

生成的 defaultdict 如下所示:

>>> result
defaultdict(<type 'dict'>,
{'001': {'SALARY': '25', 'SCHOOLS_ATTENDED': 'my Nice School', 'NAME': 'Jhon'},
'002': {'SALARY': '40', 'SCHOOLS_ATTENDED': 'His lovely school', 'NAME': 'Doe'}})

然后您可以将其合并到一个 CSV 文件中(这不是我最漂亮的作品,但目前已经足够好了):

with open("out.csv", "w", newline="") as outfile:
writer = csv.DictWriter(outfile, sorted(fieldnames))
writer.writeheader()
for item in result:
result[item]["ID"] = item
writer.writerow(result[item])

out.csv 然后包含

ID,NAME,SALARY,SCHOOLS_ATTENDED
001,Jhon,25,my Nice School
002,Doe,40,His lovely school

关于python - 将多个 CSV 文件合并为一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17805650/

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