Pandas 列を選択する

Suraj Joshi 2023年1月30日
  1. Pandas は loc プロパティを使用して 1 列を除くすべての列を選択する
  2. Pandas は drop() メソッドを用いて 1つの列以外をすべて選択する
  3. Pandas の difference() メソッドを用いて 1 列を除くすべての列を選択する
Pandas 列を選択する

このチュートリアルでは、特定の DataFrame から 1つを除くすべての列を選択する方法を説明します。この記事では、以下の DataFrame の例を使用します。

import pandas as pd

stocks_df = pd.DataFrame(
    {
        "Stock": ["Amazon", "Tesla", "Facebook", "Boeing"],
        "Price(in $)": [3180, 835, 267, 209],
        "Sector": ["Technology", "Technology", "Technology", "Aircraft"],
    }
)

print("Stocks Dataframe:")
print(stocks_df, "\n")

出力:

Stocks Dataframe:
      Stock  Price(in $)      Sector
0    Amazon         3180  Technology
1     Tesla          835  Technology
2  Facebook          267  Technology
3    Boeing          209    Aircraft

Pandas は loc プロパティを使用して 1 列を除くすべての列を選択する

import pandas as pd

stocks_df = pd.DataFrame(
    {
        "Stock": ["Amazon", "Tesla", "Facebook", "Boeing"],
        "Price(in $)": [3180, 835, 267, 209],
        "Sector": ["Technology", "Technology", "Technology", "Aircraft"],
    }
)

print("Stocks Dataframe:")
print(stocks_df, "\n")

print("Stocks DataFrame excluding Sector Column:")
filtered_df = stocks_df.loc[:, stocks_df.columns != "Sector"]
print(filtered_df, "\n")

出力:

Stocks Dataframe:
      Stock  Price(in $)      Sector
0    Amazon         3180  Technology
1     Tesla          835  Technology
2  Facebook          267  Technology
3    Boeing          209    Aircraft

Stocks DataFrame excluding Sector Column:
      Stock  Price(in $)
0    Amazon         3180
1     Tesla          835
2  Facebook          267
3    Boeing          209

stocks_df DataFrame から Sector 列を除くすべての要素を選択し、その結果を filtered_df に代入し、filetered_df の内容を表示します。

loc プロパティは指定した行と列に基づいて要素を選択します。loc プロパティの , 前の : 記号は、すべての行を選択する必要があることを示しています。列については、名前が Sector 以外の列のみを選択するように指定しています。つまり、Sector カラム以外のすべてのカラムを選択することになります。

Pandas は drop() メソッドを用いて 1つの列以外をすべて選択する

メソッドに axis=1 を設定することで、drop() メソッドを用いて指定した列を DataFrame から削除することができます。

import pandas as pd

stocks_df = pd.DataFrame(
    {
        "Stock": ["Amazon", "Tesla", "Facebook", "Boeing"],
        "Price(in $)": [3180, 835, 267, 209],
        "Sector": ["Technology", "Technology", "Technology", "Aircraft"],
    }
)

print("Stocks Dataframe:")
print(stocks_df, "\n")

print("Stocks DataFrame excluding Sector Column:")
filtered_df = stocks_df.drop("Sector", axis=1)
print(filtered_df, "\n")

出力:

Stocks Dataframe:
      Stock  Price(in $)      Sector
0    Amazon         3180  Technology
1     Tesla          835  Technology
2  Facebook          267  Technology
3    Boeing          209    Aircraft

Stocks DataFrame excluding Sector Column:
      Stock  Price(in $)
0    Amazon         3180
1     Tesla          835
2  Facebook          267
3    Boeing          209

stocks_df の DataFrame から Sector カラムを削除し、その結果を filtered_df に代入します。

また、drop() メソッドを用いて複数のカラムを削除することで、複数のカラムを DataFrame から除外することもできます。drop() メソッドの引数として、削除するカラム名のリストを指定します。

import pandas as pd

stocks_df = pd.DataFrame(
    {
        "Stock": ["Amazon", "Tesla", "Facebook", "Boeing"],
        "Price(in $)": [3180, 835, 267, 209],
        "Sector": ["Technology", "Technology", "Technology", "Aircraft"],
    }
)

print("Stocks Dataframe:")
print(stocks_df, "\n")

print("Stocks DataFrame excluding Sector and Price Column:")
filtered_df = stocks_df.drop(["Sector", "Price(in $)"], axis=1)
print(filtered_df, "\n")

出力:

Stocks Dataframe:
      Stock  Price(in $)      Sector
0    Amazon         3180  Technology
1     Tesla          835  Technology
2  Facebook          267  Technology
3    Boeing          209    Aircraft

Stocks DataFrame excluding Sector and Price Column:
      Stock
0    Amazon
1     Tesla
2  Facebook
3    Boeing

これは、stocks_df DataFrame から Price(in $)Sector の列を除外します。

Pandas の difference() メソッドを用いて 1 列を除くすべての列を選択する

import pandas as pd

stocks_df = pd.DataFrame(
    {
        "Stock": ["Amazon", "Tesla", "Facebook", "Boeing"],
        "Price(in $)": [3180, 835, 267, 209],
        "Sector": ["Technology", "Technology", "Technology", "Aircraft"],
    }
)

print("Stocks Dataframe:")
print(stocks_df, "\n")

print("Stocks DataFrame excluding Sector Column:")
filtered_df = stocks_df[stocks_df.columns.difference(["Sector"])]
print(filtered_df, "\n")

出力:

Stocks Dataframe:
      Stock  Price(in $)      Sector
0    Amazon         3180  Technology
1     Tesla          835  Technology
2  Facebook          267  Technology
3    Boeing          209    Aircraft

Stocks DataFrame excluding Sector Column:
   Price(in $)     Stock
0         3180    Amazon
1          835     Tesla
2          267  Facebook
3          209    Boeing

stocks_df DataFrame から Sector カラムを削除し、その結果を filtered_df に割り当てます。

著者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

関連記事 - Pandas DataFrame Column

関連記事 - Pandas Filter