LoginSignup
4
3

More than 5 years have passed since last update.

dplyr使いのためのpandas dfplyでもJOIN編

Posted at

はじめに

pandasデータフレームをRのdplyr同様に操作可能にするdfplyライブラリについてまとめるシリーズです。今回は100%中の100%大事なjoin関数です。複数のデータフレームを結合する関数ですね。

関連記事はこちら
dplyr使いのためのpandas dfplyすごい編

dplyrのjoin関数についてはmatsuou1氏が解説している記事が分かりやすいです。
dplyrを使いこなす!JOIN編

事前準備、例データ

Python:事前準備
import pandas as pd
import numpy as np
from dfply import * #dfply読み込み

#例データ
a = pd.DataFrame({
    'x1': ['A', 'B', 'C'],
    'x2': [1, 2, 3]
})
b = pd.DataFrame({
    'x1': ['A', 'B', 'D'],
    'x3': [True, False, True]
})

ab.png

各種join

dplyrと同様です。

Python:dfply-join
#aとbを結合
a >> inner_join(b, by='x1')

joins.png

結合キー列(by=指定)は両データフレーム共通でなくてはなりません。
そのためdplyrで可能であった by = c('x1' = 'y1') のような書き方はできません。

Python:dfply-join
#aとaを結合
a >> left_join(a, by='x1')
#同じ列名があると'_x', '_y'がついて分けてくれます。

image.png

各種bind

dplyrと同様です。

bind_rows 縦結合

Python:dfply-bind_rows
a >> bind_rows(b, join='inner')
a >> bind_rows(b) #join='outer' #ignore_index=False
  #ignore_indexでindexがリセット

bind_rows.png

bind_cols 横結合

Python:dfply-bind_cols
#例データ:cを追加
c = pd.DataFrame({
    'x1': ['B', 'C', 'D', 'E'],
    'x2': [2, 3, 4, 5]
})

#aとcを横結合
a >> bind_cols(c) # join='outer', ignore_index=False) 
  #ignore_indexでindex(列名)がリセット

image.png
単純に結合すると同じ列名があったとしてもjoinのように'_x', '_y'をつけてくれませんし、select()で'x1'を指定しても最初の列しか認識してくれません。

まとめ

いかがでしたでしょうか。dfplyのjoin関数も今まで紹介した関数同様にdplyrと同じように機能します。dplyr使いには本当に便利ですね。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3