Pandas Dataframe で複数の列を選択する

Manav Narula 2023年1月30日
  1. 複数の列を選択するための __getitem__ 構文 ([]) の使用
  2. iloc() メソッドと loc() メソッドを使った Pandas の複数列の選択
Pandas Dataframe で複数の列を選択する

Pandas の DataFrame から複数列のデータを抽出する際に問題に直面することがありますが、これは主に DataFrame を 2 次元配列のように扱うためです。DataFrame から複数の列を選択するには、getitem 構文([])に列名リストを渡してインデックスを作成する基本的な方法と、Pandas が提供する iloc() メソッドや loc() メソッドを使用します。このチュートリアルでは、以下の DataFrame から複数の列を選択します。

DataFrame の例:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.rand(4, 4), columns=["a", "b", "c", "d"])

print(df)

出力:

          a         b         c         d
0  0.255086  0.282203  0.342223  0.263599
1  0.744271  0.591687  0.861554  0.871859
2  0.420066  0.713664  0.770193  0.207427
3  0.014447  0.352515  0.535801  0.119759

複数の列を選択するための __getitem__ 構文 ([]) の使用

抽出する列の名前をリストに格納して [] に渡すことで、DataFrame から複数の列を選択することができます。以下のコードでは、先ほど表示された DataFrame から列 ac を選択する方法を説明します。

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.rand(4, 4), columns=["a", "b", "c", "d"])

print(df[["a", "c"]])

出力:

          a         c
0  0.255086  0.342223
1  0.744271  0.861554
2  0.420066  0.770193
3  0.014447  0.535801

iloc() メソッドと loc() メソッドを使った Pandas の複数列の選択

複数の列を選択するには、iloc() メソッドと loc() メソッドを用いることもできます。

列のインデックスを用いてそれらを抽出したい場合は、以下の例のように iloc() を用いることができます。

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.rand(4, 4), columns=["a", "b", "c", "d"])
print(df.iloc[:, [0, 2]])

出力:

          a         c
0  0.255086  0.342223
1  0.744271  0.861554
2  0.420066  0.770193
3  0.014447  0.535801

同様に、以下のように列の名前を指定して選択したい場合にも loc() を用いることができます。

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.rand(4, 4), columns=["a", "b", "c", "d"])

print(df.loc[:, ["a", "c"]])

出力:

          a         c
0  0.255086  0.342223
1  0.744271  0.861554
2  0.420066  0.770193
3  0.014447  0.535801
著者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

関連記事 - Pandas DataFrame