ホームページ >バックエンド開発 >Python チュートリアル >範囲条件に基づいて Pandas DataFrame を効率的にマージする方法

範囲条件に基づいて Pandas DataFrame を効率的にマージする方法

Susan Sarandon
Susan Sarandonオリジナル
2024-10-29 11:06:30430ブラウズ

How to Efficiently Merge Pandas DataFrames Based on a Range Condition?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。