4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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編]
(https://qiita.com/matsuou1/items/b1bd9778610e3a586e71)

#事前準備、例データ

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?