前提・実現したいこと
Pythonのmerge関数を使ってデータの結合を行っています。下記に実際に実装した際のコードを書きました。
df1とdf2が同じ場合(NaN値が発生しない場合)には"how=left"でdf1とdf2が違う場合(NaN値が発生しない場合)には"how=outer"で結合を行いたいです。
(NaN値がある場合か否か<データフレームによって>で結合方法を変えたい)
試したこと
数値条件などの簡易なもののIF文はまだ実装できるのですが、関数,DataFrame等が絡むものはどの様に実装
すれば良いのかが見当がつかなかったので、試した事らしい試した事はないです。すいません。
### ① df1とdf2でデータセットが同じ場合
python3
1df1 = pd.DataFrame({'Label':['img061c.jpg', 'img061c.jpg', 'img061c.jpg',...,'img062c.jpg','img062c.jpg','img062c.jpg',...,'img063c.jpg','img063c.jpg','img063c.jpg']}) 2# Label 3# img061c 4# img061c 5# img061c 6# .... 7# img062c 8# img062c 9# img062c 10# .... 11# img063c 12# img063c 13# img063c
python3
1df2 = pd.DataFrame({'PictureNumber':['img061c.jpg', 'img062c.jpg', 'img063c.jpg'], 'SumpleNumber':['くるみ豆', '金持ち豆', '秘伝豆'], 'BeenNumber':['B2', 'B3', 'B4']}) 2# PictureNumber SumpleNunber BeenNumber 3# img061c くるみ豆 B2 4# img062c 金持ち豆 B3 5# img063c 秘伝豆 B4
python3
1df3 = pd.merge(df1, df2, left_on='Label', right_on='PictureNumber', how='left').drop('PictureNumber', axis=1) 2 Label SumpleNumber BeenNumber 3# img061c.jpg くるみ豆 B2 4# img061c.jpg くるみ豆 B2 5# img061c.jpg くるみ豆 B2 6# .... .... .... 7# img062c.jpg 金持ち豆 B3 8# img062c.jpg 金持ち豆 B3 9# img062c.jpg 金持ち豆 B3 10# .... .... .... 11# img063c.jpg 秘伝豆 B4 12# img063c.jpg 秘伝豆 B4 13# img063c.jpg 秘伝豆 B4
② df1とdf2でデータセットで違う場合
python3
1df1 = pd.DataFrame({'Label':['img061c.jpg', 'img061c.jpg', 'img061c.jpg',...,'img062c.jpg','img062c.jpg','img062c.jpg',...,'img063c.jpg','img063c.jpg','img063c.jpg',...,'img064c.jpg','img064c.jpg','img064c.jpg']}) 2# Label 3# img061c 4# img061c 5# img061c 6# .... 7# img062c 8# img062c 9# img062c 10# .... 11# img063c 12# img063c 13# img063c 14# .... 15# img064c 16# img064c 17# img064c
python3
1df2 = pd.DataFrame({'PictureNumber':['img061c.jpg', 'img062c.jpg', 'img063c.jpg',"img067c.jpg"], 'SumpleNumber':['くるみ豆', '金持ち豆', '秘伝豆',"きさらぎ"], 'BeenNumber':['B2', 'B3', 'B4',"B8"]}) 2# PictureNumber SumpleNunber BeenNumber 3# img061c くるみ豆 B2 4# img062c 金持ち豆 B3 5# img063c 秘伝豆 B4 6# img067c きさらぎ B8
python3
1df3 = pd.merge(df1, df2, left_on='Label', right_on='PictureNumber', how='outer') 2 Label PictureNumber SumpleNumber BeenNumber 3# img061c.jpg img061c.jpg くるみ豆 B2 4# img061c.jpg img061c.jpg くるみ豆 B2 5# img061c.jpg img061c.jpg くるみ豆 B2 6# .... .... .... .... 7# img062c.jpg img062c.jpg 金持ち豆 B3 8# img062c.jpg img062c.jpg 金持ち豆 B3 9# img062c.jpg img062c.jpg 金持ち豆 B3 10# .... .... .... .... 11# img063c.jpg img063c.jpg 秘伝豆 B4 12# img063c.jpg img063c.jpg 秘伝豆 B4 13# img063c.jpg img063c.jpg 秘伝豆 B4 14# .... .... .... .... 15# img064c.jpg NaN NaN B7 16# .... .... .... .... 17# NaN img067c.jpg きさらぎ B8
補足情報(FW/ツールのバージョンなど)
Anaconda
Python
Pycharm
お忙しいとは思いますが、よろしくお願いいたします。
情報に不足がありましたら、ご指摘お願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/26 08:42