MENU
  • Profile
  • Life
  • Business
  • Sports
  • Tech
  • Contact
競泳元日本代表の小坂悠真オフィシャルブログです。
小坂悠真の"アスリート視点"
  • Profile
  • Life
  • Business
  • Sports
  • Tech
  • Contact
小坂悠真の"アスリート視点"
  • Profile
  • Life
  • Business
  • Sports
  • Tech
  • Contact
  1. ホーム
  2. Tech
  3. 複数テーブルをcolabでcross joinする方法

複数テーブルをcolabでcross joinする方法

2026 9/17
Tech
2023年8月14日2026年9月17日

自分用にも忘備録として書きます。

ちょっと仕事で複数テーブルの組み合わせを網羅的に出す必要がありました。
ただ、二つのテーブルをcross joinする方法はたくさんあれども、3つ以上のテーブルのcross joinってなかなか無かったのでメモしながら調べました。

動けばよい、という信条なのでコードとか汚くてすみません・・・!

目次

やりたかったこと

Cross Joinとは、2つのテーブルのすべての組み合わせを結果として生成する結合方法です。

もしテーブルAが3行持ち、テーブルBが2行持っているなら、Cross Joinの結果は6行のテーブルとなります。

はい、ここまでは当たり前のことですね。

で、やりたいことはここからもう一つを組み合わせたい、ということになります。

 

 

各パターンが少なければ手作業でもよいのですが、今回やりたかった組み合わせは約50,000通り。
スプシの関数も重すぎて動かないので今回はGoogle Colaboratoryを使いました。

 

実際に使ったコード

GoogleDriveへのマウントやCSVの読み方は割愛します。

最終的にはこうなりました。


#GoogleDriveのマウント
from google.colab import drive
drive.mount('/content/drive')


#CSVデータの読み込み
import pandas as pd
import numpy as np


data1= pd.read_csv('/content/drive/My Drive/temp/data/1.csv')
data2= pd.read_csv('/content/drive/My Drive/temp/data/2.csv')
data3= pd.read_csv('/content/drive/My Drive/temp/data/3.csv')
data4= pd.read_csv('/content/drive/My Drive/temp/data/4.csv')
data5= pd.read_csv('/content/drive/My Drive/temp/data/5.csv')


#CSVをクロスジョインしていく
d = data1.join(data2, how = 'cross')

d1 = pd.DataFrame(d)
print(d1)

d2 = d1.join(data3, how = 'cross')
print(d2)

d3 = d2.join(data4, how = 'cross')
print(d3)

d4 = d3.join(data5, how = 'cross')
print(d4)
#重複しているものを特定し、フラグを付ける
d4.loc[d4["1"]==d4["3"], "judge"] = "NG"

#フラグついたものを削除する
data = d4.drop(d4.query('judge=="NG"').index)

#確認print
print(data)

data.to_csv(f'/content/drive/My Drive/temp/data/data.csv', index=False)

要は、読み込んだCSVをcross joinして、更にそのテーブルにcross joinをする形でどんどんと重ねていっています。

#CSVをクロスジョインしていく
d = data1.join(data2, how = 'cross')

d1 = pd.DataFrame(d)
print(d1)

d2 = d1.join(data3, how = 'cross')
print(d2)

d3 = d2.join(data4, how = 'cross')
print(d3)

d4 = d3.join(data5, how = 'cross')
print(d4)

 

で、ちなみに最後の重複については、自分がやりたかったのは特定の条件の組み合わせは排除したかったので

#重複しているものを特定し、フラグを付ける
d4.loc[d4["1"]==d4["3"], "judge"] = "NG"

#フラグついたものを削除する
data = d4.drop(d4.query('judge=="NG"').index)

でフラグを付けて、データから消すようにしています。

 

ということでやりたかったことが出来ました。

 

まとめ

Google Colabを使えば、大量のデータに対しても効率的にCross Joinの操作を実行することができます。

注意点としては大きなテーブルが生成されるかもなので注意が必要です。ちょいちょいチェックしながらやっていくことをお勧めします。

それでは!

 

Tech
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
  • 京都産業大学で講演をさせて頂きました。
  • 自分的ベスト!トリプルディスプレイの配置の最適解を見つけた

この記事を書いた人

小坂 悠真のアバター 小坂 悠真

競泳元日本代表|㈱D4D 代表取締役|アスリートとして水泳教室や記事執筆やイベント出演など。ビジネスでは、起業家としてECやWEB関連の事業をメインで展開しています。

関連記事

  • AI専用PCを置いている人に、めちゃくちゃオススメしたい2つの機能
    2026年9月17日
  • Zoomの音声がこもる時の対処法|AIノイズ解除・Realtek・NVIDIA
    2025年9月1日
  • ChatGPT4oのアップデート情報のサマリ
    2024年5月21日
  • 自分的ベスト!トリプルディスプレイの配置の最適解を見つけた
    2024年1月14日
  • Chat GPTを活用したスポーツの未来の作り方
    2023年4月13日
  • これからChatGPTを活用する上で必要な能力とは!初心者向け解説
    2023年4月12日
  • Google ColaboratoryでChatGPT-4を動かすための方法
    2023年4月9日
  • GPT-NeoX-20BをGoogle Colaboratoryで動かしてみる
    2023年2月26日
Sponsored Link
最近の投稿
  • AI専用PCを置いている人に、めちゃくちゃオススメしたい2つの機能
  • AIにドハマりして、仕事の時間を減らしているのに、できることが増えすぎている話
  • 水泳で自然と身についていた「逆算思考」は、今の仕事にもつながっている話
  • Zoomの音声がこもる時の対処法|AIノイズ解除・Realtek・NVIDIA
  • ECの売上が伸びるとやることが増える。でも、まず見直すべきは「情報のインプット方法」

運営


  • Profile
  • Life
  • Business
  • Sports
  • Tech
  • Contact

© 小坂悠真の"アスリート視点".

目次