見出し画像

Python pandasを使ったデータフレームの結合

PythonのPandasを使ってデータフレーム同士を結合する方法についてご説明します。

1.横に結合する場合

データを準備

import pandas as pd

df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'], 'value': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['B', 'D', 'E', 'F'], 'value': [5, 6, 7, 8]})
結合するデータフレーム

こちらのデータフレーム1と2をkey列を使って結合してみましょう

merged_df = pd.merge(df1, df2, on='key', how='outer')
merged_df
結合したデータフレーム

データフレーム 1と2のkey列を使って結合しています。BとDはそれぞれのデータフレーム に共通しているのでvalueの部分が対応する形で結合できました。

上記のコードでは、merge() メソッドの on 引数でキーとなる列を指定しています。また、 how 引数で結合方法を指定しています。ここでは、how='outer' と指定しているため、両方のデータフレームに存在する行だけでなく、どちらか一方にしか存在しない行も含めた結合を行っています。

merged_df = pd.merge(df1, df2, on='key')
merged_df

このようにhow='outer'を指定しないと

結合したデータフレーム

両方のデータフレーム に共通するkeyの部分だけが結合されます。

2.縦に結合する場合

データを準備

import pandas as pd

df1 = pd.DataFrame({'col1': [1, 2], 'col2': [3, 4]})
df2 = pd.DataFrame({'col1': [5, 6], 'col2': [7, 8]})
縦に結合したいデータフレーム

このように共通の列名を持っているデータを縦方向に結合したい場合は以下のように記述します

concatenated_df = pd.concat([df1, df2])
concatenated_df
縦方向に連結したデータフレーム 

上記のコードでは、 concat() メソッドに縦に結合したいデータフレームをリスト形式で渡しています。concat() メソッドは、列名が同じ場合、列を縦に積み上げて結合するため、列名が異なる場合はエラーが発生します。

reset_index_df = concatenated_df.reset_index(drop=True)

またこちらのように記載することでindexをリセットできます

indexを振り直したデータフレーム 

上記のコードでは、 reset_index() メソッドに drop=True を指定しているため、元のインデックスを新しい列として追加せずに削除しています。新しいインデックスが自動的に割り当てられます。

この記事が気に入ったらサポートをしてみませんか?