2 つのデータフレーム間の違いを見つける
データ分析では、データセット間の不一致を特定することが重要です。 df1 と df2 という 2 つのデータフレームがあるとします。ここで、df2 は df1 のサブセットです。 df1 には存在するが df2 には存在しない一意の行と列を効率的に取得するには、差集合の概念を利用できます。
アプローチ: pd.concat と drop_duplicates**
主なアプローチには、pd.concat を使用して両方のデータフレームを結合し、その後、drop_duplicates を使用して重複する行または列を削除することが含まれます。 keep=False を設定すると、df1 にのみ存在する行または列のみが保持されます。df3 = pd.concat([df1, df2]).drop_duplicates(keep=False)
警告: 重複の処理
ただし、これはこのメソッドは、両方のデータフレーム自体に重複した値が含まれていないことを前提としています。そうした場合、結果が不正確になる可能性があります。これに対処するために、次の代替アプローチを採用できます。方法 1: タプルで isin を使用する
この方法では、各行を次のように変換します。 df.apply(tuple, 1) を使用してタプルを作成し、その後 df.apply(tuple, 1).isin(df2.apply(tuple, 1)) を使用してタプルが df2 に存在するかどうかを確認します。結果のデータフレームには、df2 にはない df1 からの一意の行が含まれます。df1[~df1.apply(tuple, 1).isin(df2.apply(tuple, 1))]
方法 2: インジケーターとのマージ
別のアプローチは、df1 を次のインジケーターとマージすることです。 df2 は、インジケーターを備えた pd.merge を使用して、df1 にのみ存在する行を識別します。ラムダ関数を使用すると、'_merge' 列が 'both' と等しくない行を除外できます。df1.merge(df2, indicator=True, how='left').loc[lambda x: x['_merge']!='both']
結論
これらを利用することでこのテクニックを使用すると、2 つのデータフレーム間の違いを効果的に見つけて、各データフレームに存在する固有のデータ ポイントについての洞察を得ることができます。以上がDataFrame2 にはない DataFrame1 内の固有の行を効率的に見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。