この記事ではDataFrameから特定の行を取り出す方法を紹介します。
Pandasで特定の行を取り出す方法
Pandasで特定の行を取り出すには、DataFrameのインデックスを指定して[]を使用します。例えば、DataFrame dfからインデックスが3の行を取り出すには、次のようにします。
df.loc[3]
また、複数行を取り出す場合は、インデックスのリストを指定します。例えば、インデックスが3から5の行を取り出すには、次のようにします。
df.loc[3:5]
また、条件を指定して特定の行を取り出す場合は、boolean indexingを使用します。例えば、ageという名前の付いた列がDataFrameのdfにあったと仮定します。この時にある行のage列の値が30以上の行を取り出すには、次のようにします。
df[df['age'] >= 30]
これらの方法は、DataFrameから特定の行を取り出すための基本的な方法です。
Pandasで特定の行を取り出す際の注意点
先ほど、DataFrame dfからインデックスが3の行を取り出す方法として次のように説明しました。
df.loc[3]
しかし、あやまって次のように記述してしまうと表示した際に混乱の原因となります。
df.loc(3)
これはPandasのDataFrameのインデクサーを返す関数ですので、これを表示しようとすると以下のように表示されるでしょう。
<pandas.core.indexing._LocIndexer object at 0x7f49605e1e90>
メンバ関数のlocとilocの違い
iloc
とloc
は、PandasのDataFrameやSeriesオブジェクトにおいて、行や列を取り出すためのインデックスアクセサです。
iloc
は、integer-location based indexingで、整数の位置に基づいて行や列を取り出します。例えば、df.iloc[3]
とすることで、4行目のデータを取り出します。loc
は、label-location based indexingで、ラベルに基づいて行や列を取り出します。例えば、df.loc['a']
とすることで、インデックスが’a’の行を取り出します。
両者の違いは、インデックスが整数のときにはiloc
、インデックスが文字列のときにはloc
を使うことです。
どちらを使っても、同じように行や列を取り出すことができますが、インデックスが整数の場合にloc
を使用すると、文字列として解釈されてしまうため、予期しない挙動をする可能性があります。
どちらを使用するかは、データフレームのインデックスが整数なのか文字列なのかによって決まるので、インデックスを確認し、使い分けるようにしましょう。
コメント