A,Bの2つの列に基づいてデータフレームから重複を削除し、別の列Cの最大値を持つ行を維持する。
2023-09-01 07:47:32
質問
私は2つの列(AとB)に従って重複した値を含むpandasのデータフレームを持っています。
A B C
1 2 1
1 2 4
2 7 1
3 4 0
3 4 8
C列の値が最大の行を維持したまま重複を削除したい。 こうなると
A B C
1 2 4
2 7 1
3 4 8
どうすればいいのかわかりません。私は使用する必要があります
drop_duplicates()
を使うべきなのか、それとも何か他のものを使うべきなのか?
どのように解決するのですか?
group byを使用することで可能です。
c_maxes = df.groupby(['A', 'B']).C.transform(max)
df = df.loc[df.C == c_maxes]
c_maxes
は
Series
の最大値の
C
と同じ長さ、同じインデックスを持つ
df
. もし
.transform
を使っていない場合は、印刷
c_maxes
がどう動くか見てみるといいかもしれません。
を使った別のアプローチ
drop_duplicates
を使う方法もあります。
df.sort('C').drop_duplicates(subset=['A', 'B'], take_last=True)
どちらが効率的かは分かりませんが、ソートを伴わないので最初のアプローチでしょう。
EDITです。
から
pandas 0.18
第二の解決策は
df.sort_values('C').drop_duplicates(subset=['A', 'B'], keep='last')
または、その代わりに
df.sort_values('C', ascending=False).drop_duplicates(subset=['A', 'B'])
いずれにせよ
groupby
のソリューションは大幅にパフォーマンスが向上しているようです。
%timeit -n 10 df.loc[df.groupby(['A', 'B']).C.max == df.C]
10 loops, best of 3: 25.7 ms per loop
%timeit -n 10 df.sort_values('C').drop_duplicates(subset=['A', 'B'], keep='last')
10 loops, best of 3: 101 ms per loop
関連
-
[解決済み] 列の値に基づいてDataFrameから行を選択するにはどうすればよいですか?
-
[解決済み] pandasを使った "大量データ "ワークフロー【終了しました
-
[解決済み] PandasでDataFrameの行を列の値に基づいて削除する
-
[解決済み] MySQLの重複レコードを検索する
-
[解決済み] pandas が他の列の値に基づいて新しい列を作成する / 複数の列の関数を行単位で適用する
-
[解決済み] Pythonのdictをdataframeに変換する
-
[解決済み] 重複するインデックスを持つpandasの行を削除する
-
[解決済み] groupbyでグループ内の最大値を持つ行を取得する。
-
[解決済み】pandasでカラムの種類を変更する
-
[解決済み】A列で重複を削除し、B列で最大値を持つ行を保持する
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Python Pandasで複数列の重複した行をすべて削除する
-
[解決済み] PythonでのAWS Lambdaのインポートモジュールエラー
-
[解決済み] 2つの線分が交差しているかどうかを確認するにはどうすればよいですか?
-
[解決済み] dict を txt ファイルに書き、それを読み取る?
-
[解決済み] ファブリック経由でデプロイユーザとしてvirtualenvを有効化する
-
[解決済み] 古いバージョンのPythonにおける辞書のキーの並び順
-
[解決済み] SQLAlchemy - テーブルのリストを取得する
-
[解決済み] Jupyter (IPython)ノートブックのセッションをpickleして保存する方法
-
[解決済み] Cythonのコードを含むPythonパッケージはどのように構成すればよいのでしょうか?
-
[解決済み] PythonのRequestsモジュールを使ってWebサイトに "ログイン "するには?