[解決済み] Pandasです。MultiIndexのレベル値をラベルで一意に取得する
2023-08-05 18:24:24
質問
MultiIndex化されたDataFrameがあるとします。
df = pd.DataFrame({'co':['DE','DE','FR','FR'],
'tp':['Lake','Forest','Lake','Forest'],
'area':[10,20,30,40],
'count':[7,5,2,3]})
df = df.set_index(['co','tp'])
というのは、こんな感じです。
area count
co tp
DE Lake 10 7
Forest 20 5
FR Lake 30 2
Forest 40 3
私は インデックスレベルごとにユニークな値を取得する . これは、次のようにして実現できます。
df.index.levels[0] # returns ['DE', 'FR]
df.index.levels[1] # returns ['Lake', 'Forest']
私なら
本当に
によってこれらのリストを取得することです。
レベルを名前で指定する
で、つまり
'co'
と
'tp'
. 最も短い2つの方法は、次のようになります。
list(set(df.index.get_level_values('co'))) # returns ['DE', 'FR']
df.index.levels[df.index.names.index('co')] # returns ['DE', 'FR']
しかし、どれもあまりエレガントではありません。もっと短い方法はないのでしょうか?
どのように解決するのですか?
Pandas 0.23.0がリリースされました。
導入
を使うことで、この問題に対してよりクリーンな解決策を提供します。
level
への引数です。
Index.unique()
:
In [3]: df.index.unique(level='co')
Out[3]: Index(['DE', 'FR'], dtype='object', name='co')
これは現在推奨されている解決策です。メモリ内にレベル値の完全な表現を作成し、それを再スキャンすることを避けることができるため、はるかに効率的です。
関連
-
[解決済み] Pandas DataFrameの行数を取得する方法は?
-
[解決済み] Pandasのデータフレームから行を選択するために値のリストを使用する
-
[解決済み】Pandas DataFrameのカラムヘッダからリストを取得する。
-
[解決済み】pandas MultiIndex DataFrameで行を選択する。
-
[解決済み] PythonでのAWS Lambdaのインポートモジュールエラー
-
[解決済み] Pythonです。未束縛のメソッドを束縛する?
-
[解決済み] SQLAlchemy - テーブルのリストを取得する
-
[解決済み] サブフォルダからのインポートモジュール
-
[解決済み] Pythonの検索パスを他のソースに展開する
-
[解決済み] あるメソッドが複数の引数のうち1つの引数で呼び出されたことを保証する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] SQLAlchemy: セッションの作成と再利用
-
[解決済み] googletransがエラー 'NoneType' オブジェクトに 'group' 属性がない、と言って動かなくなった。
-
[解決済み] データフレームをソートした後にインデックスを更新する
-
[解決済み] 文字列から先頭と末尾のスペースを削除するには?
-
[解決済み] あるオブジェクトが数であるかどうかを確認する、最もパイソン的な方法は何でしょうか?
-
[解決済み] Python Logging でログメッセージが2回表示される件
-
[解決済み] Pythonによる一対のクロスプロダクト [重複] (英語)
-
[解決済み] matplotlib でプロットの軸、目盛、ラベルの色を変更する方法
-
[解決済み] Flaskで非同期タスクを作る
-
[解決済み] Pythonの文字列の前にあるbという接頭辞は何を意味するのですか?