読者です 読者をやめる 読者になる 読者になる

人工知能してみる

人工知能の中の人が機械学習とかデータドリブン的なことを勉強します

pandasでiterrowsしようとしてハマった話

お早うございます。grahamianです。
タイトルどおりです。

DBからデータを取ってきてpandasのdataframeに入れてrowごとに処理するってことをやろうとしてました。
よくある処理だと思います。
で、最初は何も考えないで

for row in df:
   foo = bar(row['data'])

ってやろうとしたら動かないんですね。
ちょっと考えたら当たり前で、pandasは行列を扱っているので行か列を明示的に書いてやる必要があります。
そのために、iterrowsとiteritemsってメソッドがあります。
それぞれ行、列にイテレートするメソッドです。

それを調べた私は次のように書ききました

for row in df.iterrows():

で、とりあえずfooの中身を見るとrowが入ってるから「ヨシ」と思って作業をしてました。
しかし、どうも動作がおかしい。
なのでいろんなサイトを見ていて気がついたのが、同時にindexもfor文で回しているのです

for i, row in df.iterrows():

こうすることで思ったとおりに行の中身だけ取り出すことができました。
思わぬところでハマったのでメモ程度にここに書いておきます。
pandasはヘンなとこでハマるのでちゃんと勉強しないといけないなーと感じた事件でした。