[解決済み] 2つのデータフレームを比較し、差分を取得する [重複].
2022-09-19 21:01:31
質問
2つのdataframeを持っています。 例を挙げます。
df1:
Date Fruit Num Color
2013-11-24 Banana 22.1 Yellow
2013-11-24 Orange 8.6 Orange
2013-11-24 Apple 7.6 Green
2013-11-24 Celery 10.2 Green
df2:
Date Fruit Num Color
2013-11-24 Banana 22.1 Yellow
2013-11-24 Orange 8.6 Orange
2013-11-24 Apple 7.6 Green
2013-11-24 Celery 10.2 Green
2013-11-25 Apple 22.1 Red
2013-11-25 Orange 8.6 Orange
各データフレームはDateをインデックスとして持っています。どちらのデータフレームも同じ構造を持っています。
私がやりたいことは、これら 2 つのデータフレームを比較して、df1 にない行が df2 にあることを見つけることです。私は日付 (インデックス) と最初の列 (Banana, APple など) を比較して、それらが df2 と df1 に存在するかどうかを確認したいのです。
私は以下を試しました。
最初のアプローチでは、私はこのエラーを取得します。 "例外。Can only compare identically-labeled DataFrame objects" . 私はインデックスとして日付を削除しようとしましたが、同じエラーが発生します。
において 第三のアプローチ で、私はFalseを返すようにアサートしますが、実際に異なる行を見る方法を見つけ出すことができません。
どのようなポインタでも歓迎されます。
どのように解決するのですか?
この方法です。
df1 != df2
は、同一の行と列を持つデータフレームに対してのみ機能します。実際には、すべてのデータフレームの軸を比較するために
_indexed_same
メソッドで比較され、列/インデックス順であっても違いが見つかると例外が発生します。
もし私が正しく理解しているならば、あなたは変化を見つけたいのではなく、対称的な違いを見つけたいのでしょう。そのためには、データフレームを連結するのが一つの方法かもしれません。
>>> df = pd.concat([df1, df2])
>>> df = df.reset_index(drop=True)
によってグループ化されます。
>>> df_gpby = df.groupby(list(df.columns))
ユニークレコードのインデックスを取得する
>>> idx = [x[0] for x in df_gpby.groups.values() if len(x) == 1]
フィルタ
>>> df.reindex(idx)
Date Fruit Num Color
9 2013-11-25 Orange 8.6 Orange
8 2013-11-25 Apple 22.1 Red
関連
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] 最小限の驚き」と「変更可能なデフォルトの引数
-
[解決済み] インスタンスのクラス名を取得する?
-
[解決済み】__str__と__repr__の違いは何ですか?
-
[解決済み】type()とisinstance()の違いは何ですか?)
-
[解決済み] Pythonのキャッシュライブラリはありますか?
-
[解決済み] django.db.migrations.exceptions.InconsistentMigrationHistory
-
[解決済み] Pythonで0xを使わずにhex()を使うには?
-
[解決済み] PyQtアプリケーションのスレッド化。QtスレッドとPythonスレッドのどちらを使うか?
-
[解決済み] Pythonの検索パスを他のソースに展開する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】2つのDataFrameを比較し、その差分を並べて出力する。
-
[解決済み] Python Pandas - 2つのデータフレーム間の差分を見つける
-
[解決済み] 前月の日時オブジェクトを返す
-
[解決済み] Pandasのデータフレームでタプルの列を分割するにはどうしたらいいですか?
-
[解決済み] Djangoで2つの日付の間を選択する
-
[解決済み] Pythonのインスタンス変数とクラス変数
-
[解決済み] SQLAlchemy: 日付フィールドをフィルタリングする方法は?
-
[解決済み] Pythonのargparseを使った隠し引数の作成
-
[解決済み] Pythonでファイルの読み込みと上書きをする
-
[解決済み] Pythonでランダムなファイル名を生成する最良の方法