ホームページ > バックエンド開発 > Python チュートリアル > 2 つの Pandas DataFrame 間の違いを効率的に見つけるにはどうすればよいですか?

2 つの Pandas DataFrame 間の違いを効率的に見つけるにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-22 06:14:09
オリジナル
391 人が閲覧しました

How to Efficiently Find the Difference Between Two Pandas DataFrames?

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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート