交差する行を持つ 2 つの Pandas データフレーム (df1 と df2) が与えられた場合、タスクは、 df1 に存在しない行df2.
この問題を解決するには、df1 から df2 への左結合を実行し、df2 の重複を確実に排除して、df1 の各行が df1 の 1 つの行のみと結合するようにします。 df2.
df_all = df1.merge(df2.drop_duplicates(), on=['col1', 'col2'], how='left', indicator=True)
この左結合により、それぞれの起点を示す追加の列 _merge が作成されます。 row.
df1 に限定される行をフィルターするには、次のブール条件を適用します。
df_filtered = df_all[df_all['_merge'] == 'left_only']
一部のソリューションは、各列の各値を個別にチェックする際にエラーが発生します。行ごとの存在を考慮するのではなく。たとえば、次の解決策:
(~df1.col1.isin(common.col1)) & (~df1.col2.isin(common.col2))
は、共通に存在しない値 [3, 10] を持つ行のキャプチャに失敗するため、誤った結果を返します:
0 False 1 False 2 False 3 True 4 True 5 False dtype: bool
以上があるパンダデータフレームには存在するが、別のパンダデータフレームには存在しない行を特定する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。