今回の課題
train.csv(train_df)を左、tranaction.csv(transaction_df)を右側で左外部結合したところ、
transaction_dfのtransactions
カラムがNaNになってしまった。
原因としては、
結合するためのキーとして設定していたdate
カラムが、
train_dfとtransaction_dfの間で一つも一致するものが無く、うまく結合ができていなかっただけだった...。
初歩的な原因ではあったが、
pythonでデータの結合を試行錯誤した記録としてメモに残すことにした。
※補足
Store Sales - Time Series Forecastingで配布されているCSVデータを少し加工して、結合しようとしました。
試行錯誤した内容
1)dateとstore_nbrをキーにして、左外部結合してみた
transaction_date_family_train_df = pd.merge(train_df, transaction_df, on=['date', 'store_nbr'], how='left')
transaction_date_family_train_df.head()
これだと、transaction_df
側の、transactions
カラムがNaNってしまった。
2)dateとstore_nbrをキーにして、右側外部結合してみた
transaction_date_family_train_df = pd.merge(train_df, transaction_df, on=['date', 'store_nbr'], how='right')
transaction_date_family_train_df.head()
これだと、train_df
側のsales
カラムとonpromotion
カラムがNULLとなってしまった。
3)dateとstore_nbrをキーにして、内部結合してみた
transaction_date_family_train_df = pd.merge(train_df, transaction_df, on=['date', 'store_nbr'], how='inner')
transaction_date_family_train_df.head()
生成したデータフレームにはデータが何も格納されなかった。
上記のように試行錯誤した結果、
結合のキーに設定しているカラムに問題があるのではないか? と考えた。
そして、下記の2つを試してみた。
最後に試したこと
-
date
だけをキーにして内部結合 -
store_nbr
だけをキーに内部結合
この2つを試してみると、
store_nbr
だけをキーにして結合する場合は、データが抽出されるのに対して、
date
だけをキーにして結合すると、何もデータが抽出されなかった。
以上の結果から、
結合するためのキーとして設定していたdate
カラムが、
train_dfとtransaction_dfの間で一つも一致するものが無く、うまく結合ができていなかっただけだったと言うことがわかった。