本記事では、2つのデータフレームがあって、共通のindex(行番号,行名)の行データに対して、列データを連結する手順を載せました。もし、重複する列名がある場合はそれらを削除する操作も記載しています。
import pandas as pd
df1 = pd.read_csv('data1.csv', index_col = 0)
df1
データ1は、例えば下図のように506行×13列のデータである。
df2 = pd.read_csv('data2.csv', index_col = 0)
df2
次に、データ2は下図のように300行列×14列のデータである。データ1との違いは、行が複数抜けている。また、列名「PRICE」が1列追加されている。
DF = df1.merge(df2, left_index = True, right_index = True)
DF
下図は、データ1と2の同じindexを結合したデータである。重複する列名には語尾に_x, _yが追記されている。これら列名を元に戻す操作を次以降で行う。
DF2 = DF[DF.columns[~DF.columns.str.contains('_y')]]
DF2
列名_yを一括で消す。
col_name_list = list(DF2.columns)
col_name_list
列名をリストで取得
new_col_name_list = []
for col_name in col_name_list:
if '_x' in col_name:
new_col_name_list.append(col_name[:-2])
else:
new_col_name_list.append(col_name)
new_col_name_list
列名_x の_xを除去
DF2.columns = new_col_name_list
DF2
列名を代入すると下図のようになる。(ちなみに、これはデータ2と同じである。途中の処理をみてわかるように、実際のデータ処理におけるデータ1, 2は、互いに異なる列名が複数存在する状況、重複する列名が複数存在し得る状況を想定している。)
DF2.to_csv('data3.csv', index = True)
以上
<広告>
リンク
リンク