ホームページ >バックエンド開発 >Python チュートリアル >範囲条件に基づいて Pandas DataFrame を効率的にマージする方法
Pandas で範囲による結合
Pandas を使用したデータ操作の一般的なタスクの 1 つは、範囲条件に基づいて 2 つのデータフレームを結合することです。これには、特定の列の値がデータフレーム B の指定範囲内にあるデータフレーム A の行を識別することが含まれます。
このタスクの 1 つのアプローチには、両方のデータフレームにダミー列を作成し、次を使用してクロス結合を実行することが含まれます。このダミー列を選択し、範囲基準を満たさない行をフィルターで除外します。ただし、この方法は大規模なデータセットでは非効率となる可能性があります。
別の解決策は、配列に対して要素ごとの操作を実行するための強力な手法である numpy ブロードキャストを利用することです。データフレーム A および B の関連する列を numpy 配列に変換することで、論理演算子を適用して A_value を B_low 値および B_high 値と比較し、範囲条件を満たす行を特定できます。
import numpy as np # Convert to numpy arrays a = A.A_value.values bh = B.B_high.values bl = B.B_low.values # Find intersecting indices i, j = np.where((a[:, None] >= bl) & (a[:, None] <= bh)) # Merge and align dataframes result = pd.concat([ A.loc[i, :].reset_index(drop=True), B.loc[j, :].reset_index(drop=True) ], axis=1) print(result)
このメソッドは、ダミー列アプローチと比較して、大規模なデータセットの効率が向上します。さらに、numpy ブロードキャスト ステップのロジックを調整することで、左結合または右結合を簡単に実装できます。
以上が範囲条件に基づいて Pandas DataFrame を効率的にマージする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。