2 つのデータ フレーム間の違いを見つける
pandas データ フレームを使用する場合、2 つのデータ フレームを比較する必要がある状況がよくあります。そしてそれらの間の違いを抽出します。たとえば、ベース データ フレーム (df1) とサブセット データ フレーム (df2) があり、df2 には存在しない df1 のすべての行と列を含む新しいデータ フレーム (df3) を作成したいとします。
drop_duplicates の使用
これを実現する最も直接的な方法は、drop_duplicates を使用することです。 関数。 df1 と df2 を連結し、連結されたデータ フレームに Drop_duplicates を適用すると、重複する行を削除し、一意の行のみを含むデータ フレームを取得できます。
pd.concat([df1, df2]).drop_duplicates(keep=False)
重複の処理
ただし、df1 または df2 自体に重複行が含まれている場合は、drop_duplicates アプローチが使用されます。誤った出力が発生する可能性があります。これに対処するには、元の重複を保持する代替メソッドを使用できます。
メソッド 1: タプルで isin を使用する
このメソッドでは、データ フレームの各行を次のように変換します。タプルを作成し、そのタプルが両方のデータ フレームに存在するかどうかを確認します。他のデータ フレームのどのタプルにも一致しない行は、差分データ フレームに含まれます。
df1[~df1.apply(tuple, 1).isin(df2.apply(tuple, 1))]
方法 2: インジケーターとマージ
別このアプローチには、インジケーター列を使用して df1 と df2 をマージすることが含まれます。マージで how='left' を指定すると、df2 に対応する行がない df1 の行には、left_only の _merge 列値が割り当てられます。その後、このインジケーター列に基づいて行をフィルター処理して、差分データ フレームを取得できます。
df1.merge(df2, indicator=True, how='left').loc[lambda x: x['_merge'] != 'both']
以上が2 つの Pandas DataFrame 間の違いを効率的に見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。