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をリセットできます
上記のコードでは、 reset_index() メソッドに drop=True を指定しているため、元のインデックスを新しい列として追加せずに削除しています。新しいインデックスが自動的に割り当てられます。
この記事が気に入ったらサポートをしてみませんか?