重複する情報を含む2つのファイル(csv1とcsv2)があります。一致する箇所がある場合は、列の値をcsv2からcsv1にコピーしたい。 CSV1の凝集バージョンのCSVの複数の列に一致します。 1つのCSVから他のCSVに値をコピーする場合
empid, name, org, division, title, country, topic, time-on-topic
CSV2種類が、の形で:
org, country, topic, rating
は、new_csvは、所望の結果であるマイ:
CSV1は、の形態であります
empid, name, org, division, title, country, topic, time-on-topic, rating
基本的に、csv1とcsv2の間に 'country'と 'topic'が一致する場合は、関連付けられた 'rating'をコピーします。 o csv1構造体を新しいファイルcsv3に変換します。辞書、タプル、リストを使ってメッセージボードを検索するのに多くの時間を費やしたことを認めて恥ずかしくて、これまではキーとして1つの列しか使用していないと機能しません。 2列をキーとして使用できますか?あるいは私は間違った質問をしていますか?
これは私がこれまでやってますが、キーとして「EMPID」でてきたものです:
with open('csv1.csv', 'r') as f:
first = {rows[0]: rows[1:] for rows in list(csv.reader(f))}
with open('csv2.csv', 'r') as f:
for row in csv.reader(f):
if row[0] in first: # row[0] = url
first[row[0]].append(row[2])
merged = [(k,) + tuple(v) for k, v in first.items()]
with open('output.csv', 'w') as f:
csv.writer(f).writerows(merged)
私は私の問題の核心は、キーとして2つの列を使用していると思いますが、私はわかりませんあるケースでは、複数の列をキーとして使用することがあります。何とかキーを作成するために列を連結する必要がありますか?以下は
は、データセットにCSVをインポート検討(のStata/SAS、Rのデータフレーム、偶数のPythonパンダのデータフレーム)またはデータベース(SQLiteの/ MS AccessはファイルレベルのDBMSである)と2つの新しい割り当てられた列の参加/マージ。ループは必要ありません。 – Parfait