Python Pandas – MultiIndexのレベルの整数位置を指定してラベル値を取得する方法
はじめに
PandasのMultiIndex(マルチインデックス)において、レベルの整数位置を指定してラベル値のベクトルを取得したい場合は、MultiIndex.get_level_values()メソッドを使用します。引数には、値を取得したいレベルを整数位置またはレベル名で指定します。
このメソッドは、指定したレベルに含まれるすべてのラベル値をIndexオブジェクトとして返すため、データのフィルタリングや集計処理の前処理など、さまざまな場面で活用できます。
必要なライブラリのインポート
まず、必要なライブラリをインポートします。
import pandas as pd
MultiIndexの作成
MultiIndexは、pandasオブジェクトのための複数階層(階層型)インデックスオブジェクトです。ここでは、pd.MultiIndex.from_arrays()を使って、2つの配列からMultiIndexを作成します。
multiIndex = pd.MultiIndex.from_arrays([list('pqrrss'), list('strvwx')],
names=['One', 'Two'])
第1レベルに「One」、第2レベルに「Two」という名前を付けています。作成したMultiIndexを表示して確認しましょう。
print("The MultiIndex...\n", multiIndex)
レベル0のラベル値を取得する
get_level_values()に整数位置「0」を渡すと、第1レベル(level 0)のラベル値がすべて返されます。
print("\nLevel values at level 0...\n", multiIndex.get_level_values(0))
なお、整数位置の代わりにレベル名(例:'One'や'Two')を文字列で指定することも可能です。
サンプルコード全体
以下に、ここまでの手順をまとめた完全なコードを示します。
import pandas as pd
# MultiIndexは、pandasオブジェクトのための複数階層(階層型)インデックスオブジェクト
multiIndex = pd.MultiIndex.from_arrays([list('pqrrss'), list('strvwx')],
names=['One', 'Two'])
# MultiIndexを表示
print("The MultiIndex...\n", multiIndex)
# MultiIndexの各レベルを表示
print("\nThe levels in MultiIndex...\n", multiIndex.levels)
# レベル0のラベル値を取得
print("\nLevel values at level 0...\n", multiIndex.get_level_values(0))
実行結果
上記のコードを実行すると、次のような出力が得られます。
The MultiIndex...
MultiIndex([('p', 's'),
('q', 't'),
('r', 'r'),
('r', 'v'),
('s', 'w'),
('s', 'x')],
names=['One', 'Two'])
The levels in MultiIndex...
[['p', 'q', 'r', 's'], ['r', 's', 't', 'v', 'w', 'x']]
Level values at level 0...
Index(['p', 'q', 'r', 'r', 's', 's'], dtype='object', name='One')
ポイントのまとめ
get_level_values(0)のように整数位置を指定すると、そのレベルの全ラベル値がIndexとして返されます。- 戻り値は元のMultiIndexと同じ長さを持つため、重複したラベルもそのまま保持されます。
- レベル名を文字列で指定することもできるため、可読性の高いコードを書くことができます。
-
Python Pandas - 整数入力を使用してTimedeltaオブジェクトからマイクロ秒を取得する
Timedeltaオブジェクトからマイクロ秒を取得する方法PandasのTimedeltaオブジェクトからマイクロ秒の値を取得するには、timedelta.microsecondsプロパティを使用します。まず、必要なライブラリをインポートしましょう。import pandas as pdTimeDeltasは、Python標準のdatetimeライブラリで扱われる時間差(timedelta)の表現です。ここでは、unit引数にus(マイクロ秒)を指定し、整数値を入力としてTimedeltaオブジェクトを作成します。timedelta = pd.Timedelta(55, unit=us)作成し
-
Python Pandas入門:整数入力からTimedeltaオブジェクトのナノ秒値を取得する方法
はじめにPandasのtimedelta.nanosecondsプロパティを使用すると、Timedeltaオブジェクトからナノ秒の値を取得することができます。本記事では、整数入力を指定してナノ秒単位のTimedeltaを作成し、そのナノ秒値を返す方法を解説します。必要なライブラリのインポートまず、Pandasをインポートします。import pandas as pdTimedeltaオブジェクトの作成TimeDeltasはPython標準のdatetimeライブラリにおける時間差(timedelta)の表現方法の一つです。ナノ秒を整数入力として設定するには、unit=nsを指定します。以下のよ