Pandas DataFrame のインデックスによるカラムのドロップ

Manav Narula 2021年2月9日
Pandas DataFrame のインデックスによるカラムのドロップ

DataFrame は非常に大きく、何百もの行や列を含むこともあります。複数の列を削除するなど、DataFrame の基本的なメンテナンス操作に精通している必要があります。dataframe.drop() メソッドを使用すると、axis の指定に応じて、行の場合は 0、列の場合は 1 というように、DataFrame から列や行を削除することができます。このメソッドは、いくつかのラベルに基づいて削除する要素を特定します。例えば、以下の DataFrame から列 'a' を削除します。

import pandas as pd

df = pd.DataFrame(
    [[10, 6, 7, 8], [1, 9, 12, 14], [5, 8, 10, 6]], columns=["a", "b", "c", "d"]
)

print(df)

df.drop(["a"], axis=1, inplace=True)

print(df)

出力:

    a  b   c   d
0  10  6   7   8
1   1  9  12  14
2   5  8  10   6
   b   c   d
0  6   7   8
1  9  12  14
2  8  10   6

ドロップ関数で inplace パラメータを使用していることに注意してください。inplace パラメータに True を指定すると、元の DataFrame から列が削除されます。

この例では、カラム 'a' を削除しましたが、そのラベル名を dataframe.drop() 関数に渡す必要があります。大規模なデータセットを扱う際には、多くのカラムを一度に処理し、カラム名の代わりにカラムインデックスを使用する必要があります。

これを実現するには、dataframe.columns() メソッドを使用します。このメソッドは DataFrame のすべての列を返し、必要な列のラベルをインデックスを用いて dataframe.drop() 関数に渡します。以下のコードスニペットに、この方法を説明します。

import pandas as pd

df = pd.DataFrame(
    [[10, 6, 7, 8], [1, 9, 12, 14], [5, 8, 10, 6]], columns=["a", "b", "c", "d"]
)

df.drop(df.columns[[1, 2]], axis=1, inplace=True)

print(df)

出力:

    a   d
0  10   8
1   1  14
2   5   6

インデックスが 1 または 2 のカラムを削除します。

また、dataframe.drop() 関数の中で columns パラメータを指定するだけで、axis パラメータの使用を避けることができます。例:

import pandas as pd

df = pd.DataFrame(
    [[10, 6, 7, 8], [1, 9, 12, 14], [5, 8, 10, 6]], columns=["a", "b", "c", "d"]
)

df.drop(columns=df.columns[[1, 2]], inplace=True)

print(df)

出力:

    a   d
0  10   8
1   1  14
2   5   6
著者: 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