2018/02/01
2020/04/14
pandas データフレームの行名・列名の参照と変更と追加
当記事では、pandasのデータフレーム(DataFrame)の行名・列名の参照や変更。また、列名を利用した新しい列の追加の方法を紹介しています。こちらのcsvファイル→サンプルcsvファイルを説明用に使うので、同じことがしたい方はダウンロードして使ってください!
まずはデータを読み込みます。
import pandas as pd #pandasをpdとしてインポート
#データをdfに読み込み。
df = pd.read_csv("sample.csv")
#dfの中身を確認
print(df)
今回使うデータは以下のような形になっています。
number age blood_pressure lung_capacity sex weight disease 0 1 22 110 4300 M 79 1 1 2 23 128 4500 M 65 1 2 3 24 104 3900 F 53 0 3 4 25 112 3000 F 45 0 4 5 27 108 4800 M 80 0
行名、列名を参照する方法
.indexで行名、.clumnsで列名を参照できます。
df.index #行名 RangeIndex(start=0, stop=5, step=1)
df.columns #列名
Index(['number', 'age', 'blood_pressure', 'lung_capacity', 'sex', 'weight',
'disease'],
dtype='object')
行名、列名はリストなので、スライスで取り出したい部分だけ取り出すことも可能です。
df.columns[1:4:2] Index(['age', 'lung_capacity'], dtype='object')
行名、列名の変更
代入で変更する
行名、列名を変更するには、変更先の名前をリストにして代入します。
df.columns = ['番号','年齢','血圧','肺活量','性別','病気','体重'] print(df) 番号 年齢 血圧 肺活量 性別 病気 体重 0 1 22 110 4300 M 79 1 1 2 23 128 4500 M 10 1 2 3 24 104 3900 F 53 0 3 4 25 112 3000 F 45 0 4 5 27 108 4800 M 80 0
df.index = ["Jack","Tom","Lisa","Michel","Jacson"]
print(df)
番号 年齢 血圧 肺活量 性別 病気 体重
Jack 1 22 110 4300 M 79 1
Tom 2 23 128 4500 M 10 1
Lisa 3 24 104 3900 F 53 0
Michel 4 25 112 3000 F 45 0
Jacson 5 27 108 4800 M 80 0
ちなみに、この方法の場合、丸ごと変更する必要があります。部分的に変更しようとすると、
df.index[1] = 2 *** TypeError: Index does not support mutable operations
と、エラーに弾かれます。
.rename()を用いて変更する
.rename()を使えばピンポイントで変更したい箇所を指定して変更できます。
df.rename(columns={"age":"年齢"})
number 年齢 blood_pressure lung_capacity sex weight disease
0 1 22 110 4300 M 79 1
1 2 23 128 4500 M 65 1
2 3 24 104 3900 F 53 0
3 4 25 112 3000 F 45 0
4 5 27 108 4800 M 80 0
行と列を同時。カンマで区切ることで複数変更も可能です。
df.rename(columns={"age":"年齢","number":"番号"},index={0:"Jack"})
番号 年齢 blood_pressure lung_capacity sex weight disease
Jack 1 22 110 4300 M 79 1
1 2 23 128 4500 M 65 1
2 3 24 104 3900 F 53 0
3 4 25 112 3000 F 45 0
4 5 27 108 4800 M 80 0
この方法の場合、以下のように変更後のものを代入しないと元の状態のままです。
df = df.rename(columns={"age":"年齢","number":"番号"},index={0:"Jack"})
新しい列を作る
データフレームに無い列名を指定して、要素を代入すると新しい列が最後尾に追加されます。
df["身長"] = [173,145,167,155,132]
print(df)
番号 年齢 血圧 肺活量 性別 病気 体重 身長
Jack 1 22 110 4300 M 79 1 173
Tom 2 23 128 4500 M 10 1 145
Lisa 3 24 104 3900 F 53 0 167
Michel 4 25 112 3000 F 45 0 155
Jacson 5 27 108 4800 M 80 0 132
リストの長さは行数と一致することが求められます。してないと、、、
df["身"] = [173,145,167,155] *** ValueError: Length of values does not match length of index
と表示されます。
(totalcount 101,814 回, dailycount 54回 , overallcount 16,849,588 回)








Recommended