pandasのDataFrameのインデックスでの要素参照と代入

pandasのDataFrameは [] で列、行の順に指定して要素を参照できる。列だけを指定すると、Seriesみたいなオブジェクトとして取り出せる。

import pandas as pd

df1 = pd.DataFrame(
    {'name': ['Danny', 'Jess', 'Joey', 'D.J.', 'Steph', 'Michelle'],
     'age': [29, 24, 29, 10, 5, 0],
     'sex': ['m', 'm', 'm', 'f', 'f', 'f']},
    columns=['name', 'age', 'sex'])

print(df1)
# 出力結果
#        name  age sex
# 0     Danny   29   m
# 1      Jess   24   m
# 2      Joey   29   m
# 3      D.J.   10   f
# 4     Steph    5   f
# 5  Michelle    0   f

print(df1['name'])
# 出力結果
# 0       Danny
# 1        Jess
# 2        Joey
# 3        D.J.
# 4       Steph
# 5    Michelle
# Name: name, dtype: object

print(df1['age'])
# 出力結果
# 0    29
# 1    24
# 2    29
# 3    10
# 4     5
# 5     0
# Name: age, dtype: int64

2つ目の [] に行のインデックスを書けば、要素を参照できる。

print(df1['name'][1])
# 出力結果
# Jess

print(df1['age'][0])
# 出力結果
# 29

もちろん代入もできる。

df1['age'][0] = 290
print(df1)
# 出力結果
#        name  age sex
# 0     Danny  290   m
# 1      Jess   24   m
# 2      Joey   29   m
# 3      D.J.   10   f
# 4     Steph    5   f
# 5  Michelle    0   f

列ごと代入することもできるみたい。

df1['age'] = [2900, 2400, 2900, 1000, 500, 0]
print(df1)
# 出力結果
#        name   age sex
# 0     Danny  2900   m
# 1      Jess  2400   m
# 2      Joey  2900   m
# 3      D.J.  1000   f
# 4     Steph   500   f
# 5  Michelle     0   f

存在しない列名で代入すると、新しい列が生成される。

df1['age2'] = [290, 240, 290, 100, 50, 0]
print(df1)
# 出力結果
#        name   age sex  age2
# 0     Danny  2900   m   290
# 1      Jess  2400   m   240
# 2      Joey  2900   m   290
# 3      D.J.  1000   f   100
# 4     Steph   500   f    50
# 5  Michelle     0   f     0

関連

このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。