pandasのDataFrameのインデックスでの要素参照と代入 2015/09/06
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
関連