スポンサーリンク

[Pandas]データをマージする

Python

pandasで複数のデータをマージする方法を解説します。

データをマージする

データセット

import pandas as pd
from sklearn.datasets import load_iris
iris_data = load_iris()
df = pd.DataFrame(
    data = iris_data.data,
    columns = iris_data.feature_names,
)
df["label"] = iris_data.target
df

load_irisデータを使います。”label”は花の種類です。

データのマージ

group_mean = df.groupby("label", as_index = False)["sepal length (cm)"].mean()
group_mean

# ===== output =====
# 0 	0	5.006
# 1 	1	5.936
# 2 	2	6.588

ラベルごとに”sepal length”の平均値を計算しました。この結果をもとのデータにマージしましょう。

df.merge(group_mean, on = "label", how = "left")

# ===== output =====
# 0 	5.1	3.5	1.4	0.2	0	5.006
# 1 	4.9	3.0	1.4	0.2	0	5.006
# 2 	4.7	3.2	1.3	0.2	0	5.006
# 3 	4.6	3.1	1.5	0.2	0	5.006
# 4 	5.0	3.6	1.4	0.2	0	5.006

mergeでくっつけます。
onで指定した列を参照しており、上記では”label”に対応した値が新しく加わります。

howには”left”, “right”, “inner”など色々ありますが、基本的に”left”です。
これは元のデータ(上記はdf)の行数を保持してマージする操作になります。

pd.merge(df, group_mean, on = "label", how = "left")

# ===== output =====
# 0 	5.1	3.5	1.4	0.2	0	5.006
# 1 	4.9	3.0	1.4	0.2	0	5.006
# 2 	4.7	3.2	1.3	0.2	0	5.006
# 3 	4.6	3.1	1.5	0.2	0	5.006
# 4 	5.0	3.6	1.4	0.2	0	5.006

こんな感じで、pd.mergeと書く方法もあります。
()にくっつけたいデータを2つとも入れましょう。

ちなみに、くっつける際に参照する列を2つ以上にしたい場合、on = [“列1”, “列2”]のように書きます。

まとめ

mergeで複数のデータをくっつける方法を解説しました。
onとhowで結合する条件を指定すればOKですね。

コメント

タイトルとURLをコピーしました