Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonでDataFrameから特定の列(1列または複数列)を削除する3つの方法

pandasのDataFrameを扱っていると、不要になった列を削除したい場面はよくあります。本記事では、PythonでDataFrameから1つの列、あるいは複数の列を削除するための3つの代表的な方法を、サンプルコード付きでわかりやすく解説します。

前提:対象となるDataFrame

まず、以下のようなDataFrameを例として使用します。

 one  two three
0 1    2    3
1 4    5    6

このDataFrameに対して、「one」列を1つだけ削除すると、結果は次のようになります。

 two three
0 2    3
1 5    6

さらに「two」列も削除して複数列を削除した場合は、以下のようになります。

 three
0 3
1 6

それでは、具体的な実装方法を順番に見ていきましょう。

方法1:del文を使って列を削除する

最もシンプルなのがPython標準のdel文を使う方法です。手順は以下の通りです。

  • DataFrameを定義する
  • 削除したい列名を指定してdel文を実行する
del df['one']

コード例

import pandas as pd
data = [[1,2,3],[4,5,6]]
df = pd.DataFrame(data,columns=('one','two','three'))
print("Before deletion\n", df)
del df['one']
print("After deletion\n", df)

実行結果

Before deletion
 one two three
0 1    2    3
1 4    5    6
After deletion
 two three
0 2    3
1 5    6

del文は元のDataFrameを直接変更(破壊的処理)するため、削除後のDataFrameを受け取る変数は不要です。

方法2:pop()メソッドを使って列を削除する

次に、DataFrameが持つpop()メソッドを使う方法です。このメソッドは指定した列を削除すると同時に、その列のデータを戻り値として取得できる点が特徴です。

df.pop('one')

コード例

import pandas as pd
data = [[1,2,3],[4,5,6]]
df = pd.DataFrame(data,columns=('one','two','three'))
print("Before deletion\n", df)
df.pop('one')
print("After deletion\n", df)

実行結果

Before deletion
 one two three
0 1    2    3
1 4    5    6
After deletion
 two three
0 2    3
1 5    6

削除した列のデータを後続の処理で利用したい場合に便利な方法です。

方法3:drop()メソッドで複数の列を一度に削除する

複数の列をまとめて削除したい場合は、drop()メソッドが最適です。columns引数にリスト形式で列名を指定し、inplace=Trueを設定することで元のDataFrameから直接削除できます。

df.drop(columns=['one','two'],inplace = True)

コード例

import pandas as pd
data = [[1,2,3],[4,5,6]]
df = pd.DataFrame(data,columns=('one','two','three'))
print("Before deletion\n ", df)
df.drop(columns=['one','two'],inplace = True)
print("After deleting two columns\n", df)

実行結果

Before deletion
 one two three
0 1    2    3
1 4    5    6
After deleting two columns
 three
0 3
1 6

なお、inplace=Trueを指定せずにdf = df.drop(columns=['one','two'])のように書けば、元のDataFrameを残しつつ新しいDataFrameを作成することも可能です。用途に応じて使い分けるとよいでしょう。

まとめ

方法特徴
del df['列名']シンプルに1列だけ削除したい場合に最適
df.pop('列名')削除と同時に列データを取得したい場合に有効
df.drop(columns=[...])複数列の一括削除や柔軟な制御が必要な場合に推奨

状況に応じてこれらの方法を使い分けることで、DataFrameの前処理を効率的に行えます。

  1. Pythonで配列内の複数の数値の最大公約数(GCD)を求める方法

    はじめに本記事では、Pythonを使って配列(リスト)内の2つ以上の数値から最大公約数(GCD:Greatest Common Divisor)を求める方法を解説します。問題の概要数値の配列が与えられ、そのすべての要素に共通する最大公約数を求めることが目的です。3つ以上の数値のGCDは、「引数として渡されたすべての数値に共通する素因数の積」として定義できます。また、隣り合う2つの数値のGCDを繰り返し計算していくことでも求められます。ここでは、後者のアプローチである「ペアごとのGCDを順番に計算する」方法を実装します。アルゴリズムの流れまず、リストの最初の2つの要素のGCDを計算します。次に、

  2. Pythonで複数の数値や配列の最大公約数(GCD)を求める方法

    本記事では、以下の問題に対する解決策について詳しく解説します。問題の概要与えられた数値の配列から、それらすべての最大公約数(GCD)を求める必要があります。アプローチ2つより多い数値の最大公約数を求める場合、GCDは引数として渡されたすべての数値に共通する素因数の積と等しくなります。これは数学的な定義に基づく方法ですが、実装がやや複雑になります。もう一つの方法として、2つの数値ずつペアでGCDを繰り返し計算するという手法があります。具体的には、最初の2つの数値のGCDを求め、その結果と次の数値のGCDを計算し、これを配列の最後まで繰り返します。本記事では、後者のアプローチを実装していきます。実