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

【Python】Pandas DataFrameの列名と行インデックスを変更する3つの方法

Pandasは、Python標準ライブラリには含まれていない多彩なデータ分析機能を提供するライブラリです。その代表的な機能の一つがデータフレーム(DataFrame)の利用です。データフレームは、行と列で構成される長方形のグリッド構造を持つデータ形式で、作成時に列名を決定し、以降のデータ操作ではその名前を参照して処理を行います。

しかしながら、データフレームを作成した後に列名や行インデックスを変更したくなる場面は少なくありません。本記事では、Pandasで列名・行インデックスを変更する3つの方法を、具体的なコード例とともに解説します。

1. rename()メソッドを使う方法

rename()メソッドは、列名と行インデックスの両方を一度に変更できるため、最も汎用性が高く推奨される方法です。「旧名前: 新名前」の形式の辞書を引数として渡すだけで、元のデータフレームを壊さずに新しいデータフレームを生成できます。

コード例

import pandas as pd

df = pd.DataFrame({
    'ColumnA': [23, 92, 32],
    'ColumnB': [54, 76, 43],
    'ColumnC': [16, 45, 10]
},
index=['10-20', '20-30', '30-40'])

df_renamed = df.rename(columns={'ColumnA': 'Col1', 'ColumnB': 'Col2', 'ColumnC': 'Col3'},
index={'10-20': '1', '20-30': '2', '30-40': '3'})
print(df)
print("\n", df_renamed)

出力結果

        ColumnA  ColumnB  ColumnC
10-20        23       54       16
20-30        92       76       45
30-40        32       43       10

         Col1     Col2     Col3
1          23       54       16
2          92       76       45
3          32       43       10

上記のコードを実行すると、列名が「Col1〜Col3」に、行インデックスが「1〜3」に変更されたことが確認できます。rename()ではcolumns引数で列名を、index引数で行インデックスをそれぞれ個別に指定可能です。

2. df.columnsに直接代入する方法

df.columns属性に対して、新しい列名のリストを直接代入することでも変更できます。この場合、代入後にデータフレームを参照すると、常に新しい列名が使用されます。

コード例

import pandas as pd

df = pd.DataFrame({
    'ColumnA': [23, 92, 32],
    'ColumnB': [54, 76, 43],
    'ColumnC': [16, 45, 10]
},
index=['10-20', '20-30', '30-40'])

df.columns = ["Length", "Breadth", "Depth"]
print(df)

出力結果

        Length   Breadth   Depth
10-20       23        54      16
20-30       92        76      45
30-40       32        43      10

この方法はシンプルですが、必ず既存の列数と同じ数の要素を持つリストを渡す必要がある点に注意してください。一部だけを部分的に変更したい場合は、前述のrename()の方が便利です。

3. 接頭辞(プレフィックス)を追加する方法

Pandasのデータフレームには、すべての列名に共通の文字列を付加するためのメソッドも用意されています。add_prefix()を使うと接頭辞を、add_suffix()を使うと接尾辞を、各列名にまとめて追加できます。

コード例

import pandas as pd

df = pd.DataFrame({
    'ColA': [23, 92, 32],
    'ColB': [54, 76, 43],
    'ColC': [16, 45, 10]
},
index=['10-20', '20-30', '30-40'])

print(df.add_prefix('Jan-'))

出力結果

        Jan-ColA  Jan-ColB  Jan-ColC
10-20         23        54        16
20-30         92        76        45
30-40         32        43        10

この例では、すべての列名の先頭に「Jan-」が付加されました。複数のデータフレームを結合する際など、同じ列名が重複してしまう場合に、出所を区別する目的でよく活用されます。

まとめ

  • rename()メソッド: 辞書を渡して特定の列名・行インデックスのみを選択的に変更できる最も柔軟な方法
  • df.columnsへの代入: 全列名を一括で置き換えるシンプルな方法(列数の一致が必要)
  • add_prefix() / add_suffix(): 全列名に共通の接頭辞・接尾辞を一括追加する方法

用途に応じてこれらの方法を使い分けることで、データフレームの列名管理を効率的に行えます。

  1. 【Python】Pandas DataFrameの全行に関数を適用するapply()メソッドの使い方

    このチュートリアルでは、PandasのDataFrameのすべての行に対して関数を適用できるapply()メソッドについて解説します。 apply()メソッドとは apply()は、DataFrameの各行(または各列)に対して任意の関数を適用するためのメソッドです。例えば、各行の数値同士を乗算した結果を新しい列として追加したい場合などに非常に便利です。axis=1を指定することで行方向への適用が可能になります(axis=0の場合は列方向に適用されます)。ここでは、いくつかの実装方法を順番に見ていきましょう。 例1: 自作関数をラムダ式で適用する まず、独自に定義した関数をlambda式経

  2. Pythonによるデータ分析と可視化入門|pandasの基本を徹底解説

    Pythonによるデータ分析と可視化の概要 Pythonには、データ分析と可視化のための強力なライブラリが数多く用意されています。代表的なものとしては、NumPy、pandas、matplotlib、seabornなどが挙げられます。本記事では、その中でも中心的な役割を果たすpandasについて詳しく解説します。pandasはNumPyをベースに構築されたオープンソースライブラリで、高速なデータ分析やデータのクリーニング・前処理を効率的に行えます。さらに、pandas自体にも便利な可視化機能が組み込まれています。 pandasのインストール方法 pandasをインストールするには、ターミナル