SQLでデータを用意する際、cross joinを用いて欠損がないデータセットをつくり、
そこに情報をleft outer joinしていくことがあります。
Pandasでも同様の処理をしたいと思い、ドキュメントをみたのですが、
Pandasのmerge
(SQLのjoin)のhowはleft,right,outer,innerしか指定できません。
そこで、以下のような方法で擬似的にcross joinを行います。
import pandas as pd #日付データ date_value = pd.DataFrame( { 'cdr':pd.date_range(start='2020-01-02',end='2020-01-31'), #クロスジョイン用のキー 'crossjoinkey':1 } ) #idデータ pk_value = pd.DataFrame( { 'id':['id1','id2','id3'], #クロスジョイン用のキー 'crossjoinkey':1 } ) #outer joinだがキーが全て一緒なのでクロスジョインになる pd.merge(date_value,pk_value,how='outer')
これで、無事日付かけるidの粒度のデータが作れました。