【Python】PandasのDataFrameで行名、列名を変更する方法を紹介(一部変更、全変更、列内容を行名にする方法)

【Python】PandasのDataFrameで行名、列名を変更する方法を紹介(一部変更、全変更、列内容を行名にする方法)

この記事では行名や列名の変更方法を紹介しています。
なお紹介しているのは一部変更、全変更、列内容を行名に変更する方法です。

「行番号、列番号を012…とリセットさせたい」という人はこの記事では無く以下の記事で紹介しています。

【Python】PandasのDataFrameでindex、columnの番号リセット、列内容をindexにする方法

 

この記事での目標
・行名、列名の一部変更方法の理解
・行名、列名の全変更方法の理解
・列内容を行名にする方法の理解

 

確認するにあたり以下のDataFrameを中心に使用していきます。

 

DataFrameとSeries型の違いがわからない人はまず以下の記事で理解しましょう!!
DataFrameとSeriesの違いを紹介
その他Pythonの記事は以下にまとめています!!

Python記事まとめ

[スポンサーリンク]


行名や列名の一部変更

行名(index)列名(column)の一部だけ変更したいという場合はdf.renameメソッドを使用します。
指定方法は以下の通り

では行名の一部変更、列名の一部変更、行名列名の一部変更する場合の例を見ていきましょう。

行名だけ一部変更

行名の一部変更する場合はrenameメソッドindexだけを指定しましょう。
行名0をAA、行名1をBBと変更してみます。

実行前

実行後

実際に行名0と1がそれぞれAA、BBと変更されていることが確認できます。

 

列名だけ一部変更

次に列名の一部変更をする場合はrenameメソッドcolumnsを指定するだけです。
では列名0をRA、列名1をRBと変更してみます。

実行前

実行後

実際に列名0と1がそれぞれRA,RBと変更されていることが確認できます。

 

行名と列名の一部変更

次に行名列名をまとめて一部変更します。
これはrenameメソッドindexcolumnsをどちらも指定するだけです。

では行名0,1をAA,BBに変更、列名0,1をRA,RBに変更してみましょう。

実行前

実行後

実際に行名0,1がAA,BBに変更、列名0,1がRA,RBと変更されていることが確認できます。

 

行名全て変更

一部では無く行名全て変更したい!という場合は以下のように行名のリストを指定します。
この時、リスト内の値の数と行数が一致していないとエラーが発生します。

では行名を0,1,2からAA,BB.CCに変更してみましょう。

実行前

実行後

実際に行名が0,1,2からAA,BB,CCに変更されていることが確認できます。

ちなみにリスト内の数と行数が一致していない場合はValueErrorが発生します。

[スポンサーリンク]


列名全て変更

次に列名全て変更する場合は、以下のように列名をリストで指定しましょう。
この時、リスト内の値の数と列数が一致していないとエラーが発生します。

では列名を0,1,2からRA,RB,RCに変更しましょう。

実行前

実行後

実際に列名が0,1,2からRA,RB,RCに変更されていることが確認できます。

ちなみに行名全て変更の時と同じく、列数とリスト内の数が一致しないとValueErrorが発生します。

列内容を行名にする

次に列内容を行名にする方法です。
この項目では以下の3行3列のDataFrameを用いて確認します。

この0列目にあるA、B、Cを行名にしてみましょう。
列内容を行名にセットする時に使うのがset_indexメソッドです。

オプションなど 初期値 説明
key 行名にする列内容
drop True 行名にする列を残すか消すかの設定
append False 元々ある行名を残すか消すのかの設定
inplace False 行名をセットするDataFrameを上書きするかの設定
verify_integrity False セットした行名の内容が被ってないかチェックする設定

最低限必要なのはkeyで任意でオプションを設定できます。
たくさんオプションありますが、単純にset_indexメソッドを使用する場合は次のkeyのみセットを参照すればOKです。

keyのみセット

まずはシンプルにkeyだけを指定した場合です。

これで0列目の内容が行名になりました。
同じようにただ行名を列内容に変更したい場合はオプションなしでOKです!

dropオプションを使用

次にdropオプションを設定した場合です。
drop行名に使用する列を削除するのか残すのかを設定することができるオプションです。
(Trueで消す、Falseで残す、デフォルトはTrue)

デフォルトのTrueでは削除されるようになっているのでFalseにして確認してみましょう。

Falseにしたことで行名に使用した0列目が残っていることがわかります。

appendオプションを使用

次にappendオプションを有効にした場合です。
appendは元々存在している行名を残すか消すのか設定することができるオプションです。
(Falseで消す、Trueで残す、デフォルトではFalse)

Trueにして0列目をindexにセットしてみましょう。

元々の行名が残ってそこに0列目の行名に追加され、階層indexになっていることが確認できます。

inplaceオプションを使用

次にinplaceオプションを有効にした場合です。
inplaceオプション行名をセットするDataFrame自体を上書きをするオプションです。
(Trueで上書き、Falseで上書きしない、デフォルトはFalse)

Trueにすると上書きするので戻り値の代入が必要なくなります。
ではinplaceTrueにして0列目をセットしてみましょう。

戻り値を代入せずとも0列目がセットされていることがわかります。
まぁ動作自体は以下と同じです。

ちなみにinplaceオプションを指定したときは戻り値がありません(Noneになる)。

verify_integrityオプションを使用

verify_integrityオプションを設定した場合です。
verify_integrityオプションは設定する行名で被りがないかチェックをするオプションです。
(Trueでチェック、Falseでチェックしない、デフォルトはFalse)

被ってる内容を使いたいので以下のDataFrameを使用します。

では以上のDataFrameverify_integrityオプションを使用します。

Aが被ってるぞ!!というエラーが発生しました。
もちろんverify_integrityオプションFalseにしていると普通にできます。

[スポンサーリンク]


Pandasカテゴリの最新記事