ホームページ >バックエンド開発 >Python チュートリアル >df2 には存在するが df1 には存在しない行を識別する方法
データフレームを比較して違いを特定することは、データ分析にとって不可欠です。この問題では、2 つのデータフレーム df1 と df2 が与えられ、df2 には存在するが df1 には存在しない行を見つける必要があります。
!= のような演算子を使用した直接比較データフレームの構造が異なる場合、エラーが発生する可能性があります。より良いアプローチは、データフレームを連結し、インデックスをリセットしてから比較することです。 df1 == df2 を使用すると、ブール行列が生成されます。True は両方のデータフレームに行が存在することを示し、False は相違点を示します。
次に、group-by 操作を実行できます。連結されたデータフレーム上で一意の行を識別します。目標は、データフレーム内で 1 回だけ出現する行を検索することです。これは、グループの長さをチェックすることで実現できます。長さ 1 の行は一意のレコードを表します。
最後に、識別された一意の行インデックスを使用してデータフレームをフィルタリングできます。これにより、df1 に存在しない行が df2 に提供されます。
たとえば、提供されたデータフレームの例を考えてみます。
<code class="python">import pandas as pd df1 = ... df2 = ... # Concatenate dataframes df = pd.concat([df1, df2]) df = df.reset_index(drop=True) # Group by unique values df_gpby = df.groupby(list(df.columns)) # Get unique row indices idx = [x[0] for x in df_gpby.groups.values() if len(x) == 1] # Filter dataframe result = df.reindex(idx)</code>
結果のデータフレームdf1 には存在しない df2 の行が含まれます。
以上がdf2 には存在するが df1 には存在しない行を識別する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。