【发布时间】:2016-07-26 19:26:01
【问题描述】:
我正在尝试将两个 csv 文件与一个公共 id 列合并,并将合并写入一个新文件。我尝试了以下方法,但它给了我一个错误 -
import csv
from collections import OrderedDict
filenames = "stops.csv", "stops2.csv"
data = OrderedDict()
fieldnames = []
for filename in filenames:
with open(filename, "rb") as fp: # python 2
reader = csv.DictReader(fp)
fieldnames.extend(reader.fieldnames)
for row in reader:
data.setdefault(row["stop_id"], {}).update(row)
fieldnames = list(OrderedDict.fromkeys(fieldnames))
with open("merged.csv", "wb") as fp:
writer = csv.writer(fp)
writer.writerow(fieldnames)
for row in data.itervalues():
writer.writerow([row.get(field, '') for field in fieldnames])
两个文件都有“stop_id”列,但我又收到了这个错误 - KeyError: 'stop_id'
任何帮助将不胜感激。
谢谢
【问题讨论】:
-
data.setdefault(row["stop_id"], {}).update(row)- 为什么这么复杂? -
另外,按列合并两个表是用
pandas.merge完成的,见这里pandas.pydata.org/pandas-docs/stable/… -
我使用了另一个堆栈溢出示例作为对此的输入。你能建议一个替代方案吗?谢谢
-
太好了,感谢 Alleo
-
@sgpbyrne - 请尝试为此使用 Pandas 模块。只需 4-5 行即可实现上述目标