1. ホーム
  2. パイソン

[解決済み】pandas DataFrameで特定のカラム名を変更する【重複】の巻

2022-04-05 11:16:03

質問

で指定したカラム名を変更するエレガントな方法を探していました。 DataFrame .

プレイデータ ...

import pandas as pd
d = {
         'one': [1, 2, 3, 4, 5],
         'two': [9, 8, 7, 6, 5],
         'three': ['a', 'b', 'c', 'd', 'e']
    }
df = pd.DataFrame(d)

私がこれまでに見つけた最もエレガントな解決策.

names = df.columns.tolist()
names[names.index('two')] = 'new_name'
df.columns = names

シンプルなワンライナーを期待していたのですが・・・この試みは失敗でした・・・。

df.columns[df.columns.tolist().index('one')] = 'another_name'

何かヒントがあれば教えてください。

解決方法は?

ワンライナーは存在する。

In [27]: df=df.rename(columns = {'two':'new_name'})

In [28]: df
Out[28]: 
  one three  new_name
0    1     a         9
1    2     b         8
2    3     c         7
3    4     d         6
4    5     e         5

以下は rename メソッドを使用します。

定義: df.rename(self, index=None, columns=None, copy=True, inplace=False)
Docstring
インデックスと列の変更は、入力関数または他の関数を使って行います。
関数を使用します。関数/ディクショナリ値は一意でなければならない。ラベルは
dict / Seriesに含まれるものは、そのまま残される。

パラメータ
----------
index : ディクショナリまたは関数、オプション
    インデックス値に適用する変換
columns : ディクショナリーまたは関数、オプション
    列の値に適用する変換
copy : boolean, デフォルト True
    基礎となるデータもコピーする
inplace : boolean, デフォルトFalse
    新しいDataFrameを返すかどうか。もしTrueなら、copyの値は
    は無視されます。

参照
--------
シリーズ名変更

戻り値
-------
renamed : DataFrame (新しいオブジェクト)