no-image

python で csv を結合する

pandas を使う事で容易に結合できる。

例えば以下のような csv ファイルがあったとする

a.csv

NO,CODE
1,987
2,111
3,222

b.csv

ID1,ID2,CODE
1,111111111111111111,111111111111111111
2,222222222222222222,222222222222222222

pandas を使うことで容易に結合する事ができる

import pandas as pd

# まず2つのCSVを読み込む
a = pd.read_csv('./a.csv', encoding='utf-8')
b = pd.read_csv('./b.csv', encoding='utf-8')

# b の ID1 を NO に置換する
b_ = b.rename(columns={'ID1': 'NO'})

# a とb 2つのCSVを結合する。結合する際のキーは NO とする
df_merged = pd.merge(a, b_, on='NO')

# 確認
print(df_merged)

# CSV ファイルとして出力する
df_merged.to_csv("merged.csv", index=False)

結果

 % python3 main.py
   NO  CODE_x                 ID2              CODE_y
0   1     987  111111111111111111  111111111111111111
1   2     111  222222222222222222  222222222222222222

今回、結合した csv ファイルそれぞれに CODE というカラムがそれぞれに存在している。

pd.merge の第一引数になったファイルは _x という suffix がつき、

第二引数になったファイルには _y という suffix が付く。