【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()で取り出してから挿入する流れが安全です。
-
【Python・Pandas】データフレームの特定の列の合計値を取得する方法
データ分析をしていると、データフレーム(DataFrame)の中から特定の列だけの合計値を求めたい場面によく出会います。そんなときに便利なのが、Pandasのsum関数です。 合計を計算したい列をsum関数に渡すだけで、その列の合計値を簡単に取得できます。さらに、axis引数を指定すれば、列方向・行方向のどちらで集計するかも自由に制御可能です。 それでは、具体的なコード例を見ていきましょう。 サンプルコード import pandas as pd my_data = { Name: pd.Series([Tom, Jane, Vin, Eve, Will]), Age: p
-
Pandasデータフレームで列の先頭文字を大文字に変換する方法
このチュートリアルでは、Pandasデータフレームの列の先頭文字を大文字に変換する方法を解説します。文字列処理に便利な str.capitalize() メソッドを使用します。まず、PythonのリストからDataFrameを作成し、その後 str の capitalize メソッドを使って先頭文字を大文字に変換してみましょう。サンプルコード:DataFrameの作成# pandasライブラリをインポート import pandas as pd # DataFrameの列に使うリスト names = [tutorialspoint, mohit, sharma] age = [25, 34,