itertuples を使って pandas データフレームを反復処理する。

itertuplesを使用してpandasのdataframeを反復しています。また、反復処理中に行番号を取得したい。

for row in df.itertuples():
    print row['name']

期待される出力:

1 larry
2 barry
3 michael

1, 2, 3 は行番号です。カウンターを使わず、行番号を取得したい。pandasを使って簡単に実現する方法はないでしょうか?

ソリューション

itertuplesを使用すると、各行に対してtupleという名前のファイルが作成されます。デフォルトでは、row.Index` を使用して、その行のインデックス値にアクセスすることができる。

もしインデックス値が探していたものと異なる場合は、enumerate を使用することができます。

for i, row in enumerate(df.itertuples(), 1):
    print(i, row.name)

enumerate` は、醜いカウンタ構造の代わりとなるものです。

解説 (2)
for row in df.itertuples():
    print(getattr(row, 'Index'), getattr(row, 'name'))
解説 (1)