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

【Python入門】Pandas DataFrameの列を先頭(最初の位置)に移動する方法

PandasのDataFrameで特定の列を先頭(最初の位置)へ移動したい場合、pop()メソッドで列を取り出し、insert()メソッドで任意の位置に挿入し直すのが定番の手法です。この2つのメソッドを組み合わせることで、列の順序を自由に入れ替えることができます。

手順1:サンプル用のDataFrameを作成する

まずは3つの列(Student、Result、Roll Number)を持つDataFrameを作成します。

import pandas as pd

dataFrame = pd.DataFrame(
    {
        "Student": ['Jack', 'Robin', 'Ted', 'Marc', 'Scarlett', 'Kat', 'John'],
        "Result": ['Pass', 'Fail', 'Pass', 'Fail', 'Pass', 'Pass', 'Pass'],
        "Roll Number": [5, 10, 3, 8, 2, 9, 6]
    }
)

手順2:pop()で列を取り出す

pop("Roll Number")を呼び出すと、指定した列がDataFrameから削除され、同時にその列がSeriesとして返されます。この戻り値を変数に保存しておきます。

shiftPos = dataFrame.pop("Roll Number")

手順3:insert()で先頭位置に挿入する

続いて、insert()メソッドを使って保存しておいた列を位置「0」(先頭)に挿入します。第1引数に挿入位置のインデックス、第2引数に列名、第3引数に挿入するデータを渡します。

dataFrame.insert(0, "Roll Number", shiftPos)

完全なコード例

上記の手順をすべてまとめたコードは以下のとおりです。

import pandas as pd

# DataFrameを作成
dataFrame = pd.DataFrame(
    {
        "Student": ['Jack', 'Robin', 'Ted', 'Marc', 'Scarlett', 'Kat', 'John'],
        "Result": ['Pass', 'Fail', 'Pass', 'Fail', 'Pass', 'Pass', 'Pass'],
        "Roll Number": [5, 10, 3, 8, 2, 9, 6]
    }
)

print("DataFrame ...\n", dataFrame)

# 「Roll Number」列をpopで取り出す
shiftPos = dataFrame.pop("Roll Number")

# 先頭位置(インデックス0)に列を挿入
dataFrame.insert(0, "Roll Number", shiftPos)

print("\n列を先頭に移動した後のDataFrame...\n", dataFrame)

実行結果

このコードを実行すると、次のような出力が得られます。

DataFrame ...
    Result  Roll Number   Student
0    Pass            5      Jack
1    Fail           10     Robin
2    Pass            3       Ted
3    Fail            8      Marc
4    Pass            2  Scarlett
5    Pass            9       Kat
6    Pass            6      John

列を先頭に移動した後のDataFrame...
   Roll Number  Result   Student
0            5    Pass      Jack
1           10    Fail     Robin
2            3    Pass       Ted
3            8    Fail      Marc
4            2    Pass  Scarlett
5            9    Pass       Kat
6            6    Pass      John

ポイント解説

  • pop()は対象の列をDataFrameから削除しつつ戻り値として返すため、一時変数を介さずに列の移動が行えます。
  • insert(0, 列名, データ)のように第1引数に0を指定することで、必ず先頭に列を挿入できます。
  • 同じ列名が既に存在する場合はエラーになるため、事前にpop()で取り出してから挿入する流れが安全です。

  1. 【Python・Pandas】データフレームの特定の列の合計値を取得する方法

    データ分析をしていると、データフレーム(DataFrame)の中から特定の列だけの合計値を求めたい場面によく出会います。そんなときに便利なのが、Pandasのsum関数です。 合計を計算したい列をsum関数に渡すだけで、その列の合計値を簡単に取得できます。さらに、axis引数を指定すれば、列方向・行方向のどちらで集計するかも自由に制御可能です。 それでは、具体的なコード例を見ていきましょう。 サンプルコード import pandas as pd my_data = { Name: pd.Series([Tom, Jane, Vin, Eve, Will]), Age: p

  2. Pandasデータフレームで列の先頭文字を大文字に変換する方法

    このチュートリアルでは、Pandasデータフレームの列の先頭文字を大文字に変換する方法を解説します。文字列処理に便利な str.capitalize() メソッドを使用します。まず、PythonのリストからDataFrameを作成し、その後 str の capitalize メソッドを使って先頭文字を大文字に変換してみましょう。サンプルコード:DataFrameの作成# pandasライブラリをインポート import pandas as pd # DataFrameの列に使うリスト names = [tutorialspoint, mohit, sharma] age = [25, 34,