Pandas 列を選択する

Suraj Joshi 2023年1月30日 2021年1月23日
  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 に割り当てます。

Author: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

関連記事 - Pandas DataFrame Column

関連記事 - Pandas Filter