ホームページ > バックエンド開発 > Python チュートリアル > Pandas MultiIndex DataFrame で行を効率的に選択する方法

Pandas MultiIndex DataFrame で行を効率的に選択する方法

Susan Sarandon
リリース: 2024-12-12 19:01:16
オリジナル
280 人が閲覧しました

How to Efficiently Select Rows in Pandas MultiIndex DataFrames?

Pandas MultiIndex DataFrame での行の選択

問題の概要

MultiIndex を持つ Pandas DataFrame がある場合、特定の値に基づいて行を選択するにはどうすればよいですか/各インデックスレベルのラベル?

でスライスしますloc

df.loc[key, :]
ログイン後にコピー
  • key は、インデックス レベルごとに 1 つずつラベルのタプルです。
  • これにより、さまざまなレベルの特定の値に基づいて行を選択する便利で簡潔な方法が提供されます。

でスライスxs

df.xs(level_key, level=level_name, drop_level=True/False)
ログイン後にコピー
  • level_key は、特定のインデックス レベルのキーです。
  • drop_level は、結果のデータフレームからレベルを削除するかどうかを制御します。
  • xs は、単一レベルでスライスする場合に特に便利です。

によるフィルタリングquery

df.query("condition")
ログイン後にコピー
  • 条件は、フィルタリング基準を指定するブール式です。
  • 複数のインデックス レベルにわたる柔軟なフィルタリングをサポートします。

get_level_values の使用

mask = df.index.get_level_values(level_name).isin(values_list)
selected_rows = df[mask]
ログイン後にコピー
  • を作成します特定のインデックス レベルの値に基づくブール マスク。
  • より複雑なフィルタリング操作、または複数の値をスライスする場合に役立ちます。

例 1: レベル「1」で特定の値を持つ行を選択し、 'two':

# Using loc
selected_rows = df.loc[['a'], ['t', 'u']]

# Using xs
selected_rows = df.xs('a', level='one', drop_level=False)
selected_rows = selected_rows.xs(['t', 'u'], level='two')

# Using query
selected_rows = df.query("one == 'a' and two.isin(['t', 'u'])")

# Using get_level_values
one_mask = df.index.get_level_values('one') == 'a'
two_mask = df.index.get_level_values('two').isin(['t', 'u'])
selected_rows = df[one_mask & two_mask]
ログイン後にコピー

例 2: レベル 'two' の数値不等式に基づいて行をフィルター処理する:

# Using query
selected_rows = df.query("two > 5")

# Using get_level_values
two_mask = df.index.get_level_values('two') > 5
selected_rows = df[two_mask]
ログイン後にコピー

ヒントと考慮事項

  • の複雑さを考慮してください。スライス/フィルタリング操作を選択し、それに応じて適切な方法を選択してください。
  • 単一または少数のレベルでの単純なスライスの場合は、loc または xs が推奨されます。
  • 複数の値での複雑なフィルタリングまたはスライスの場合は、使用を検討してください。 query または get_level_values を使用すると柔軟性が高まります。
  • 複雑な指定には pd.IndexSlice を使用することに注意してください。 loc.
  • sort_index() を使用したスライス操作により、並べ替えられていない MultiIndexe を持つ大きな DataFrame のパフォーマンスが向上します。

以上がPandas MultiIndex DataFrame で行を効率的に選択する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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