ホームページ >バックエンド開発 >Python チュートリアル >df2 には存在するが df1 には存在しない行を識別する方法

df2 には存在するが df1 には存在しない行を識別する方法

Barbara Streisand
Barbara Streisandオリジナル
2024-10-19 21:08:29463ブラウズ

How to Identify Rows Present in df2 But Absent in df1?

2 つのデータフレームの違い

データフレームを比較して違いを特定することは、データ分析にとって不可欠です。この問題では、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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。