ホームページ >バックエンド開発 >Python チュートリアル >Pandas で範囲条件に基づいて DataFrame を効率的に結合するにはどうすればよいですか?

Pandas で範囲条件に基づいて DataFrame を効率的に結合するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-30 12:18:02872ブラウズ

How to Efficiently Join DataFrames Based on Range Conditions in Pandas?

Pandas で範囲ごとに結合 / マージする最良の方法

データ分析では、以下に基づいてデータフレームを結合またはマージする必要があるのが一般的です。特定の範囲条件。 1 つのアプローチはダミー列を使用したクロス結合を使用することですが、これは非効率的で複雑になる可能性があります。よりエレガントで効率的な解決策は、numpy ブロードキャストを利用することです。

numpy ブロードキャスト

numpy ブロードキャストを使用すると、異なる形状の配列間で要素ごとの操作を実行できます。これを利用して、データフレーム内のどの値が指定された範囲条件を満たすかを判断できます。

Setup

2 つのデータフレームを考えます。A には列 A_id と A_value が、B には列が含まれます。列 B_id、B_low、および B_high。 A_value が B_low と B_high の間にあるように、A と B を結合したいと考えています。

実装

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

# Convert dataframes to arrays
a = A.A_value.values
bh = B.B_high.values
bl = B.B_low.values

# Determine matching rows and columns
i, j = np.where((a[:, None] >= bl) & (a[:, None] <= bh))

# Join corresponding rows from A and B
joined = pd.concat([
    A.loc[i, :].reset_index(drop=True),
    B.loc[j, :].reset_index(drop=True)
], axis=1)

# Print joined dataframe
print(joined)</code>

このメソッドは、要素ごとの比較とブロードキャストを利用して効率的に識別します。範囲条件を満たす A と B の行を結合します。これはエレガントかつ効率的であり、ループやダミー列の必要性を回避します。

以上がPandas で範囲条件に基づいて DataFrame を効率的に結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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