閉じる

Pandasで列の順番を入れ替える6つの方法:データ分析を効率化するテクニック

Pythonを用いたデータ分析において、PandasのDataFrame操作は欠かせないスキルの一つです。

データの前処理や可視化の準備段階で、列の順番を直感的に並べ替えたい場面は頻繁に発生します。

列の順序を適切に整えることで、データの全体像を把握しやすくなり、その後の解析作業の効率が飛躍的に向上します。

この記事では、2026年現在の最新ライブラリ仕様に基づき、実務で役立つ列の入れ替えテクニックを詳しく紹介します。

データ準備:サンプルDataFrameの作成

まずは、列の入れ替え操作を試すためのサンプルデータを準備しましょう。

以下のコードでは、ID、氏名、年齢、部署名、入社年を持つDataFrameを作成します。

Python
import pandas as pd

# サンプルデータの作成
df = pd.DataFrame({
    'ID': [101, 102, 103],
    'Name': ['田中', '佐藤', '鈴木'],
    'Age': [28, 35, 42],
    'Department': ['営業', '開発', '人事'],
    'JoinedYear': [2021, 2018, 2023]
})

print("元のDataFrame:")
print(df)
実行結果
元のDataFrame:
    ID Name  Age Department  JoinedYear
0  101   田中   28         営業        2021
1  102   佐藤   35         開発        2018
2  103   鈴木   42         人事        2023

方法1:リスト形式で列名を指定して並べ替える

最も基本的かつ頻繁に利用されるのが、新しい順序のリストを渡す方法です。

DataFrameに対して、希望する列名の順番をリストとして指定するだけで、簡単に再配置が可能です。

この方法は、直感的でコードの可読性が高いため、小規模なデータセットで特におすすめです。

Python
# 列名を任意の順番に指定
new_order = ['ID', 'JoinedYear', 'Department', 'Name', 'Age']
df_reordered = df[new_order]

print("並べ替え後のDataFrame:")
print(df_reordered)
実行結果
並べ替え後のDataFrame:
    ID  JoinedYear Department Name  Age
0  101        2021         営業   田中   28
1  102        2018         開発   佐藤   35
2  103        2023         人事   鈴木   42

ただし、存在しない列名をリストに含めるとエラー(KeyError)が発生するため注意してください。

方法2:reindexメソッドを活用する

reindexメソッドを使用すると、より柔軟に列の順番を変更できます。

この手法の利点は、リスト指定による入れ替えと同様の効果を持ちつつ、欠損している列がある場合の挙動を制御できる点にあります。

引数columnsに対して新しい順序を指定することで、DataFrameを再構築します。

Python
# reindexを使用して列を並べ替え
cols = ['Name', 'Age', 'ID', 'Department', 'JoinedYear']
df_reindexed = df.reindex(columns=cols)

print(df_reindexed)
実行結果
  Name  Age   ID Department  JoinedYear
0   田中   28  101         営業        2021
1   佐藤   35  102         開発        2018
2   鈴木   42  103         人事        2023

もし指定したリストに元のDataFrameにない列名が含まれていた場合、その列はNaNで埋められた状態で追加されます。

方法3:insertメソッドで特定の列を移動させる

特定の1列だけを任意の位置に移動させたい場合は、insertメソッドが便利です。

まず、移動させたい列をpopメソッドで一度取り出してから、insertで目的のインデックスに挿入します。

「最後の列を先頭に持っていきたい」といったケースで非常に役立ちます。

Python
# 1. 移動させたい列を抜き出す
col_to_move = df.pop('JoinedYear')

# 2. 先頭(インデックス0)に挿入する
df.insert(0, 'JoinedYear', col_to_move)

print(df)
実行結果
   JoinedYear   ID Name  Age Department
0        2021  101   田中   28         営業
1        2018  102   佐藤   35         開発
2        2023  103   鈴木   42         人事

この方法は破壊的な操作(元のDataFrameを直接書き換える)である点に留意してください。

方法4:列名で昇順・降順にソートする

列の数が多い場合、手動でリストを作成するのは現実的ではありません。

そのようなときは、sort_indexメソッドを使用して、列名をアルファベット順などで自動ソートしましょう。

引数にaxis=1を指定することで、行ではなく列を対象にソートを実行します。

Python
# 列名で昇順にソート
df_sorted = df.sort_index(axis=1)

print(df_sorted)
実行結果
   Age Department   ID  JoinedYear Name
0   28         営業  101        2021   田中
1   35         開発  102        2018   佐藤
2   42         人事  103        2023   鈴木

ascending=Falseを指定すれば、降順に並べ替えることも可能です。

方法5:スライスとリスト操作を組み合わせる

特定の列だけを先頭に移動させ、残りの列の順番は維持したいという要件も多いでしょう。

この場合、Pythonのリスト内包表記や集合演算を組み合わせると効率的です。

以下の例では、’Department’を先頭にし、それ以外の列をそのまま後ろに繋げています。

Python
# 先頭にしたい列
first_col = ['Department']

# それ以外の列を取得
remaining_cols = [c for c in df.columns if c not in first_col]

# リストを結合して新しい順序を作成
new_order = first_col + remaining_cols
df_custom = df[new_order]

print(df_custom)
実行結果
  Department   ID Name  Age  JoinedYear
0         営業  101   田中   28        2021
1         開発  102   佐藤   35        2018
2         人事  103   鈴木   42        2023

このロジックを応用すれば、動的に列の並びを制御するプログラムも簡単に組むことができます。

方法6:ilocを使用してインデックス番号で入れ替える

列名ではなく、列のインデックス(番号)で指定する方法もあります。

ilocを使用することで、特定の列位置を自由に入れ替えることができます。

例えば、列の並びを完全に逆転させたい場合は、以下のように記述します。

Python
# 列の順番を逆にする
df_reversed = df.iloc[:, ::-1]

print(df_reversed)
実行結果
  Department  Age Name   ID  JoinedYear
0         営業   28   田中  101        2021
1         開発   35   佐藤  102        2018
2         人事   42   鈴木  103        2023

また、df.iloc[:, [0, 2, 1, 3, 4]]のように、インデックスのリストを渡して順序を制御することも可能です。

各手法の比較と使い分け

今回紹介した6つの方法について、それぞれの特徴をまとめました。

手法主なメリット適用シーン
リスト指定最もシンプルで読みやすい数個の列を確実に並べたい時
reindex存在しない列への耐性がある外部リストに基づき再構成する時
insert / pop特定の1列を移動しやすい単一の列を特定位置に移動する時
sort_index自動化が可能列名で整理したい時
リスト内包表記柔軟な条件指定が可能特定の列以外を保持したい時
iloc番号で指定できる列名が不明な時や逆順にしたい時

データ分析の現場では、「可読性のリスト指定」「汎用性のリスト内包表記」を使い分けるのが一般的です。

まとめ

Pandasで列の順番を入れ替える方法は多岐にわたりますが、状況に応じて最適な手段を選ぶことが重要です。

基本的にはリスト形式での指定で十分ですが、大量の列を扱う場合や動的な処理が必要な場合は、sort_indexやリスト操作を組み合わせる手法が効果を発揮します。

特に「データの可視化前にIDや名前を先頭に持ってくる」といった小さな工夫が、分析ミスを防ぎ、チーム内でのデータ共有をスムーズにします。

今回学んだテクニックを活用して、より効率的でクリーンなデータ分析コードを目指しましょう。

PythonとPandasの進化は続いていますが、これらの基本操作は2026年現在もデータエンジニアにとって必須の技術です。

URLをコピーしました!