ホームページ > バックエンド開発 > Python チュートリアル > Numpy ブロードキャストを使用してパンダで範囲ベースの結合を効率的に実行するにはどうすればよいですか?

Numpy ブロードキャストを使用してパンダで範囲ベースの結合を効率的に実行するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-10-30 19:53:31
オリジナル
782 人が閲覧しました

How to Efficiently Perform Range-Based Joins in Pandas Using Numpy Broadcasting?

Pandas での範囲ベースの結合の最も効果的な方法

パンダのデータフレームを操作する場合、範囲ベースの結合 (マージ) を実行する必要があります。 )は一般的なタスクです。これに対処するために、さまざまなアプローチが提案されていますが、それぞれに独自の利点と欠点があります。ただし、最もエレガントで効率的な方法は、numpy ブロードキャストを利用することです。

データフレーム A と B を考えてみましょう。ここでの目標は、A_value が B_low と B_high で指定された範囲内にあるという条件に基づいてそれらを内部結合することです。

これを実現するには、numpy の機能を活用して、A_value の各要素が範囲基準を満たしているかどうかを確認します。これは、B の範囲の下限と上限 (B_low と B_high) に対して A_value の値をブロードキャストすることで実現されます。

結果は 2 つの配列 i と j になります。ここで、i は一致する A_value のインデックスを保持します。 A の要素、j は B の対応するインデックスを保持します。これらのインデックスを組み合わせることで、両方のデータフレームから目的の行を取得し、それらを連結してマージされたデータフレームを作成できます。

このアプローチの更新されたコードは次のとおりです。 :

<code class="python">import numpy as np

a = A.A_value.values
bh = B.B_high.values
bl = B.B_low.values

i, j = np.where((a[:, None] >= bl) &amp; (a[:, None] <= bh))

pd.concat([
    A.loc[i, :].reset_index(drop=True),
    B.loc[j, :].reset_index(drop=True)
], axis=1)</code>
ログイン後にコピー

このメソッドは効率的なソリューションを提供するだけでなく、内部結合と左結合の両方を適切に処理します。パラメーターを調整することで、さまざまな結合シナリオに簡単に適応させることができます。

以上がNumpy ブロードキャストを使用してパンダで範囲ベースの結合を効率的に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート