ITいろいろ

プログラミングやクラウド、データ解析など、ITにかかわることをいろいろと書いています。

PandasのDataFrameを1行ずつ(もしくは1列ずつ)取り出す

取得したデータを行ごとに操作したいことってありますよね。 例えば、機械学習のモデルを作った後に、テスト用のデータを行ごとに推論させて結果を保存する、というようなときに、便利な使い方を紹介します。使う関数はiterrows()を使います。

コード紹介

# import
import pandas as pd

# データセットを作る
df = pd.DataFrame({'a':[10,20,30],'b':['A','B','C'],'c':[True,False,True]})
#    a b   c
# 0 10 A True
# 1 20 B False
# 2 30 C True

print("列aの中身を表示")
# 行を繰り返す
for index, row in df.iterrows():
    print(index, row['a'])

print("2行目の中身を表示")
# 列を繰り返す
for header, column in df.iteritems():
    print(header, column[1])

出力結果

少し解説

for index, row in df.iterrows(): とすることで、dfの中身を行ごとに取り出して繰り返す、ということになります。

初めの引数のindexには行番号、2番目の引数のrowには取得したデータが入ります。

また、iterrows()の代わりにiteritems()を使うと列ごとに取得するようになります。

簡単で便利ですね。