2つのcsvファイルを共通のid列にマージし、新しいファイルにマージを書き込もうとしています。私は、次のことを試してみましたが、それは私にエラーを与えている -一般的な列のPythonで2つのCSVファイルをマージする
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)' - なぜとても複雑なのですか? – Alleo
また、2つのテーブルをカラムごとにマージするには、 'pandas.merge'を使います。http://pandas.pydata.org/pandas-docs/stable/merging.html#brief-primer-on-merge-methods-relational -algebra – Alleo
これに入力として別のスタックオーバーフローの例を使用しました。代替案を提案できますか?ありがとう – sgpbyrne