前提・実現したいこと
Python初心者です。pandasを使い、2つのデータフレームを2つのキーによりouterで結合しました。この時、以下のような状態になりました。
元データフレーム2つの行数の合計:450
2キーによりouterで結合した後のデータフレームの行数:448
このように結合後は2行減っています。この時、減った2行を確認するにはどうすればいいでしょうか。また、減った理由としては、結合時に使った2つのキーが重複していたからと考えてよいでしょうか。
試したこと
減った2行を確認するため、以下のコードを書きました。しかし、出力された行が多く、上記の結果とは合致しません。
Python
1# 2つのデータフレームを縦方向に結合する 2import pandas as pd 3 4df_inspect = pd.concat([df1, df2], join='outer') 5 6# 重複行の抽出 7df_inspect_dup = df_inspect[df_inspect.duplicated(subset=['hoge1', 'hoge2'], keep=False)] 8display(df_inspect_dup)
環境
GoogleColaboratoryを使っています。
outerで結合というのと、join='inner'というのはどちらが正しいのですか?
ご指摘ありがとうございます。コードのほうの表記が違っていました。「outerで結合」が正しいです(自分の環境でouter以外にもいろいろな結合で実験していまして、コードにコピペする時に誤りました)。
「元データフレーム2つの行数の合計:450」とあるのですが、たとえば、df1, が200行、df2が250行、というような意味でしょうか?
それとも、それぞれが450行ずつあるのでしょうか?
確認のため、.concatで結合した直後にprint(len(df1), len(df2), len(df_inspect)) した結果を記載ください。
siruku6様、ありがとうございます。元データフレームの2つの行数の合計は、df1・df2で異なっており、おっしゃる例で言うと、df1が200行、df2が250行という意味です。
can110様、ありがとうございます。.concatで結合した直後にprint(len(df1), len(df2), len(df_inspect)) した結果、「123 325 448」と出力されました。