【Pandas】データフレームの行名、列名の変更[Python]

  • URLをコピーしました!
目次

データ解析支援ライブラリPandas

前回はデータ解析支援ライブラリPandasで、同じ行名や列名が含まれている場合の行データ、列データの呼び出し方を解説しました。

そこで分かったのは、やっぱり同じ名前を使うのはよろしくないということ。

ということで行名や列名を変更するにはどうしたらいいか解説をしていきます。

まずは準備から。

使用するデータは前回と同じデータを使いましょう。

データの読み込み方はこんな感じ。

import pandas as pd

df = pd.read_csv("python-pandas-10_data1.txt", index_col=0)

df

実行結果

ではでは試していきましょう。

行名、列名を全部変える方法

まずは行名を全部変えてみます。

その場合は行名を取得する「.index」にリストを指定します。

import pandas as pd

df = pd.read_csv("python-pandas-10_data1.txt", index_col=0)

df.index = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"]

df

実行結果

列名を全部変更するには同様に「.columns」にリストを指定します。

import pandas as pd

df = pd.read_csv("python-pandas-10_data1.txt", index_col=0)

df.columns = ["a", "b", "c", "d", "e"]

df

実行結果

ちなみに数が合わないとエラーがでるので注意してください。

import pandas as pd

df = pd.read_csv("python-pandas-10_data1.txt", index_col=0)

df.index = ["a", "b", "c", "d", "e", "f", "g", "h", "i"]

df

実行結果
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-5-a7c8f32abd50> in <module>
      3 df = pd.read_csv("python-pandas-10_data1.txt", index_col=0)
      4 
----> 5 df.index = ["a", "b", "c", "d", "e", "f", "g", "h", "i"]
      6 
      7 df

/opt/anaconda3/lib/python3.7/site-packages/pandas/core/generic.py in __setattr__(self, name, value)
   5190         try:
   5191             object.__getattribute__(self, name)
-> 5192             return object.__setattr__(self, name, value)
   5193         except AttributeError:
   5194             pass

pandas/_libs/properties.pyx in pandas._libs.properties.AxisProperty.__set__()

/opt/anaconda3/lib/python3.7/site-packages/pandas/core/generic.py in _set_axis(self, axis, labels)
    688 
    689     def _set_axis(self, axis, labels):
--> 690         self._data.set_axis(axis, labels)
    691         self._clear_item_cache()
    692 

/opt/anaconda3/lib/python3.7/site-packages/pandas/core/internals/managers.py in set_axis(self, axis, new_labels)
    181             raise ValueError(
    182                 "Length mismatch: Expected axis has {old} elements, new "
--> 183                 "values have {new} elements".format(old=old_len, new=new_len)
    184             )
    185 

ValueError: Length mismatch: Expected axis has 10 elements, new values have 9 elements

特定の行、列の名前を変更する

特定の行、列の名前を変更するには「.rename」を用います。

まずは行名を変更してみます。

その場合は「.rename(index={“変更前の行名”: “変更後の行名”})」です。

import pandas as pd

df = pd.read_csv("python-pandas-10_data1.txt", index_col=0)

df = df.rename(index={"data1-1": "A"})

df

実行結果

次に列名を変更してみます。

列名を変更する場合は「.rename(columns={“変更前の列名”: “変更後の列名”})」です。

import pandas as pd

df = pd.read_csv("python-pandas-10_data1.txt", index_col=0)

df = df.rename(columns={"value1-1": "A"})

df

実行結果

ちなみにカンマで繋げることで複数の行、列の名前を一度に変更することも可能です。

例えば2つの列名を一度に変更する場合は「.rename(columns={“変更前の列名1”: “変更後の列名1”, “変更前の列名2”: “変更後の列名2”})」という感じです。

import pandas as pd

df = pd.read_csv("python-pandas-10_data1.txt", index_col=0)

df = df.rename(columns={"value1-1": "A", "value1-5": "E"})

df

実行結果

また特定の行と列を一度に変更することも可能です。

その場合は「.rename(index={“変更前の行名”: “変更後の行名”}, columns={“変更前の列名”: “変更後の列名”})」となります。

import pandas as pd

df = pd.read_csv("python-pandas-10_data1.txt", index_col=0)

df = df.rename(index={"data1-5": "E"}, columns={"value1-1": "A"})

df

実行結果

今回は行名、列名を変更する方法を解説しました。

これで複数のデータフレームを連結する際、先に列名、行名を変更して、列名、行名を被らないようにできるようになりました。

次回からは少し機械学習を見据えて、pandasを使ったデータ処理の方法を学んでいきたいと思います。

最初はnanというデータの解説とダミーデータのファイルを生成するプログラムに、nanをランダムに挿入するように改良してみたいと思います。

ということで今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次