2 つのデータ フレーム間の違いを見つける方法
データを扱うとき、重複する情報を含む 2 つのデータ フレームがあることがよくありますが、一意の行または列も含まれます。一方のデータ フレームに存在し、もう一方のデータ フレームには存在しない行と列のみを含むデータ フレームを取得するには、データ フレームの差分操作を実行する必要があります。
これを実現するには、drop_duplicates 関数を次のコマンドで利用できます。 keep=False パラメータ。連結されたデータ フレームから重複する行を効果的に削除します。
pd.concat([df1,df2]).drop_duplicates(keep=False)
ただし、このメソッドは、両方のデータ フレームにデータが含まれていないことを前提としています。重複します。元のデータ フレームに重複が存在する場合、上記の方法では重複が誤って削除されてしまいます。このシナリオに対処するには、次の 2 つの代替アプローチのいずれかを採用できます。
方法 1: タプルで isin を使用する
この方法では、データ フレームを作成し、isin を使用して df1 のタプルが df2 に存在するかどうかを確認します。 df1 にのみ存在する行は保持されます。
df1[~df1.apply(tuple,1).isin(df2.apply(tuple,1))]
方法 2: インジケーターとマージ
インジケーター パラメーターを True にして 2 つのデータ フレームをマージすることで、どの行が df1 または df2 に固有であるかを示す新しい列を作成できます。 _merge 列の値が left_only である行を選択することで、df1 に固有の行をフィルターで除外できます:
df1.merge(df2,indicator = True, how='left').loc[lambda x : x['_merge']!='both']
これらの手法を実装することで、2 つのデータ フレーム間の差異を効率的に判断でき、次のことが保証されます。各データ フレームからの一意の情報のみを含むデータ フレームができました。
以上が2 つの Pandas DataFrame 間の違いを効率的に見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。