pandasパターン - 結合

結合はデータフレーム同士をつなぐ手法です。
pandasでは、concat, merge, join メソッドがよく用いられています。
それぞれの使い分けは以下。
用途メソッド
単純にくっつけるだけconcat
特定のキーで紐付けるmerge
インデックスをキーとするjoin

前置き

以下のテーブルを準備します。

import pandas as pd
# C: col => 列名
# R: row => 行名
d1 = {"group": ["a", "b", "c"],
      "C1": [1, 2, 3],
      "C2": [2, 4, 6],
      "C3": [3, 6, 9]}
r1 = ["R1-1", "R1-2", "R1-3"]

d2 = {"group": ["a", "b", "c"],
      "C1": [2, 5, 7],
      "C2": [1, 3, 8],
      "C3": [4, 7, 9]}
r2 = ["R2-1", "R2-2", "R2-3"]

d3 = {"group": ["a", "b"],
      "C4": [7, 2],
      "C5": [6, 1]}
r3 = ["R1-1", "R1-2"]

df1 = pd.DataFrame(d1, index=r1)
df2 = pd.DataFrame(d2, index=r2)
df3 = pd.DataFrame(d3, index=r3)

df1_nogroup = df1.drop("group", axis=1)
df3_nogroup = df3.drop("group", axis=1)

jupyter上で見るとこんな感じになります。

pandasのDataFrame(結合編)

グループにわけて集計

df.groupby("列名").集約関数() でグループごとに集計することができます。

集約関数の一覧はPandas公式ページのgroupbyの説明ページに載っています。

df.groupby("group").sum() # groupごとの列の合計値を求める

全体を集計

df.集約関数() でグループごとに集計することができます。

df.sum()  # 列の合計値を求める

結果はseriesで返ってくるため、ここではDataFrameに変換し、転置することで見やすくしています。