0
0

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 3 years have passed since last update.

[python] pandasでリストを横結合

Posted at

やりたいこと

  • 2つのリストをキーとなる項目で横結合する

ライブラリ

pandas

試してみる

  • 左外部結合
  • 右外部結合
  • 内部結合

SQLでいうところの

  • left outer join
  • right outer join
  • inner join

サンプルデータ

sample
import pandas as pd

# 購入リスト
data1 = [
    ['100', '2', 'りんご'],
    ['200', '3', 'みかん'],
    ['300', '1', 'もも'],
    ['500', '2', 'メロン']
]

df1 = pd.DataFrame(data=data1, columns=['商品ID', '個数', '商品名'])

# 価格リスト
data2 = [
    ['100', '150'],
    ['200', '100'],
    ['300', '200'],
    ['400', '300'],
]

df2 = pd.DataFrame(data=data2, columns=['商品ID', '価格'])
サンプルデータ
# df1
  商品ID 個数  商品名
0  100  2  りんご
1  200  3  みかん
2  300  1   もも
3  500  2  メロン

#df2
  商品ID   価格
0  100  150
1  200  100
2  300  200
3  400  300

左外部結合

  • df1全てと結合キーが一致するdf2を返す
構文
pd.merge(df1, df2, how="left", on="結合キー")
sample_left_join
r = pd.merge(df1, df2, how="left", on="商品ID")
print(r)
結果
  商品ID 個数  商品名   価格
0  100  2  りんご  150
1  200  3  みかん  100
2  300  1   もも  200
3  500  2  メロン  NaN
  • 購入リストと一致する価格リスト(商品ID=100, 200, 300)と、購入リストにしかない商品ID=500が返ってくる
  • 価格リストには商品ID=500はないので価格はNaNが返ってくる
  • 購入リストには商品ID=400はないので返ってこない

右外部結合

  • df2全てと結合キーが一致するdt1を返す
構文
pd.merge(dtf, df2, how="right", on="結合キー")
sample_right_join
r = pd.merge(df1, df2, how="right", on="商品ID")
print(r)
結果
  商品ID   個数  商品名   価格
0  100    2  りんご  150
1  200    3  みかん  100
2  300    1   もも  200
3  400  NaN  NaN  300
  • 価格リストと一致する購入リスト(商品ID=100, 200, 300)と、価格リストにしかない商品ID=400が返ってくる
  • 購入リストには商品ID=400はないので個数と商品名はNaNが返ってくる

内部結合

  • df1df2の結合キーが一致するレコードを返す
構文
pd.merge(df1, df2, how="inner", on="結合キー")
sample_right_join
r = pd.merge(df1, df2, how="right", on="商品ID")
print(r)
結果
  商品ID 個数  商品名   価格
0  100  2  りんご  150
1  200  3  みかん  100
2  300  1   もも  200
  • 商品IDが一致する購入リストと価格リスト(商品ID=100, 200, 300)が返ってくる
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?