Pandas DataFrame で列の名前を変更する方法

  1. DataFrame.columns メソッドを使用して PandasDataFrame の列の名前を変更します
  2. DataFrame.rename() メソッドを使用して Pandas DataFrame の列の名前を変更します
  3. DataFrame.set_axis() メソッドを使用して Pandas DataFrame の列の名前を変更します

多くの場合、データ分析で列名を操作する必要があります。この記事では、すでに定義されている panadas DataFrame の列名を操作/名前変更するためのさまざまな方法を探ります。

DataFrame.columns メソッドを使用して PandasDataFrame の列の名前を変更します

この方法は非常に簡単で、列の名前を直接変更できます。次のように DataFrame.columns 属性を使用して新しい列名のリストを割り当てることができます:

import pandas as pd

example_df = pd.DataFrame([
                ['John', 20, 45], 
                ['Peter', 21, 62], 
                ['Scot', 25, 68]],
                index=[0, 1, 2], 
                columns=['Name', 'Age', 'Marks'])
                  
print"\nOriginal DataFrame"
print(pd.DataFrame(example_df))
example_df.columns = ['Name','Age','Roll_no']

print"\nModified DataFrame"
print(pd.DataFrame(example_df))

出力:

Original DataFrame
    Name  Age  Marks
0   John   20     45
1  Peter   21     62
2   Scot   25     68

Modified DataFrame
    Name  Age  Roll_no
0   John   20       45
1  Peter   21       62
2   Scot   25       68

このアプローチの 1つの欠点は、列の名前を 1つだけ変更する必要がある場合でも、列全体をリストする必要があることです。列の数が多い場合、列リスト全体を指定することは実用的ではありません。

DataFrame.rename() メソッドを使用して Pandas DataFrame の列の名前を変更します

前のメソッドの代替アプローチは、DataFrame.rename() メソッドを使用することです。この方法は、すべての列の名前を変更する必要がない場合に非常に便利です。

古い列名をキー、新しい名前を値として指定する必要があります。

import pandas as pd

example_df = pd.DataFrame([['John', 20, 45, 78], 
                           ['Peter', 21, 62, 68], 
                           ['Scot', 25, 68, 95]],
                           index=[0, 1, 2], 
                           columns=['Name', 'Age', 'Marks','Roll_no'])
                  
print"\nOriginal DataFrame"
print(pd.DataFrame(example_df))
example_df.rename(columns={'Marks': 'Roll_no', 
                           'Roll_no': 'Marks'}, inplace=True)

print"\nModified DataFrame"
print(pd.DataFrame(example_df))

出力:

Original DataFrame
    Name  Age  Marks  Roll_no
0   John   20     45       78
1  Peter   21     62       68
2   Scot   25     68       95

Modified DataFrame
    Name  Age  Roll_no  Marks
0   John   20       45     78
1  Peter   21       62     68
2   Scot   25       68     95

この方法の最も重要な利点は、必要な数の列を指定できることです。特定の列の名前を変更する必要がある場合に非常に効果的であり、以前の方法とは異なり、dataframe の列リスト全体をリストする必要はありません。

DataFrame.rename() 関数呼び出しで、inplace パラメーターを True に指定したことに気付くでしょう。inplace パラメータはデフォルトで FALSE で、新しい Pandas DataFrame を返すかどうかを指定します。

TRUE と指定すると、関数呼び出しは新しい PandasDataFrame を返さず、既存の DataFrame を変更します。

DataFrame.set_axis() メソッドを使用して Pandas DataFrame の列の名前を変更します

Pandas の列の名前を変更するもう 1つの便利な方法は DataFrame です。このメソッドを使用するときは、列リスト全体を指定する必要があります。

import pandas as pd

example_df = pd.DataFrame([['John', 20, 45, 78], 
                           ['Peter', 21, 62, 68], 
                           ['Scot', 25, 68, 95]],
                           index=[0, 1, 2], 
                           columns=['Name', 'Age', 'Marks','Roll_no'])
                  
print"\nOriginal DataFrame"
print(pd.DataFrame(example_df))

example_df.set_axis(['Name', 'Age', 'Roll_no','Marks'], 
                    axis='columns', inplace=True)

print"\nModified DataFrame"
print(pd.DataFrame(example_df))

出力:

Original DataFrame
    Name  Age  Marks  Roll_no
0   John   20     45       78
1  Peter   21     62       68
2   Scot   25     68       95

Modified DataFrame
    Name  Age  Roll_no  Marks
0   John   20       45     78
1  Peter   21       62     68
2   Scot   25       68     95

関連記事 - Pandas DataFrame

  • Pandas DataFrame で空の列を作成する方法
  • Pandas Dataframe のインデックスを列に変換する方法
  • comments powered by Disqus