![見出し画像](https://assets.st-note.com/production/uploads/images/98963764/rectangle_large_type_2_840882dc26aabcb9f07e28cd326d37cd.png?width=800)
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]})
![](https://assets.st-note.com/img/1677404216770-cdupml5uNH.png)
こちらのデータフレーム1と2をkey列を使って結合してみましょう
merged_df = pd.merge(df1, df2, on='key', how='outer')
merged_df
![](https://assets.st-note.com/img/1677404341738-0cKqfrzypC.png)
データフレーム 1と2のkey列を使って結合しています。BとDはそれぞれのデータフレーム に共通しているのでvalueの部分が対応する形で結合できました。
上記のコードでは、merge() メソッドの on 引数でキーとなる列を指定しています。また、 how 引数で結合方法を指定しています。ここでは、how='outer' と指定しているため、両方のデータフレームに存在する行だけでなく、どちらか一方にしか存在しない行も含めた結合を行っています。
merged_df = pd.merge(df1, df2, on='key')
merged_df
このようにhow='outer'を指定しないと
![](https://assets.st-note.com/img/1677404597832-ve1VjMAzUt.png)
両方のデータフレーム に共通するkeyの部分だけが結合されます。
2.縦に結合する場合
データを準備
import pandas as pd
df1 = pd.DataFrame({'col1': [1, 2], 'col2': [3, 4]})
df2 = pd.DataFrame({'col1': [5, 6], 'col2': [7, 8]})
![](https://assets.st-note.com/img/1677404697916-jhyOHVhQYK.png)
このように共通の列名を持っているデータを縦方向に結合したい場合は以下のように記述します
concatenated_df = pd.concat([df1, df2])
concatenated_df
![](https://assets.st-note.com/img/1677404794982-zwz5vfKZP3.png)
上記のコードでは、 concat() メソッドに縦に結合したいデータフレームをリスト形式で渡しています。concat() メソッドは、列名が同じ場合、列を縦に積み上げて結合するため、列名が異なる場合はエラーが発生します。
reset_index_df = concatenated_df.reset_index(drop=True)
またこちらのように記載することでindexをリセットできます
![](https://assets.st-note.com/img/1677404943283-q14LbemxPC.png)
上記のコードでは、 reset_index() メソッドに drop=True を指定しているため、元のインデックスを新しい列として追加せずに削除しています。新しいインデックスが自動的に割り当てられます。
この記事が気に入ったらサポートをしてみませんか?