pandas iterrows
普通は、df.apply(func, axis=1) で対処?
pandasでは、通常列ごとのオペレーションをするが、行ごとにオペレーションをしたいときもあり得る。 Series.iteritems()
generateされるのは、index, item itemはSeriesのvalue
DataFrame.iterrows()
generateされるのは、index, Series. rowがseriesオブジェクトで来る。
Seriesは、行で1つのSeriesになるので、dtypeは、いろんなデータ型がまじり、object型になりそう
たくさん、voteがあり、いろんな意見が参考になる。
iterrows, itertuples, apply(axis=1), ilocでのloop いろんなものがる。
itertuples()が(多くの場合)早い、iterrowsはseriesをboxingするので。
以下は、昔の記述 + 訂正
-------------------------------------------------------------------------
このあたりは、R(tidyr)でも同じような感じだと思うけど、
iterrows(), iteritems(), itertuples()の3つがある。
series
iteritems() で、 for index, item in Series.iteritems(): みたいな形
dataframe
iteritems():
generateするのが、行の中で列の要素を廻って、その後に次の行にという形
for column_name, item in DataFrame.iteritems():
列の名前と shapeが(1,)なseriesがgenerateされてくる
iterrows():
ひとつの列(series)としてかえってくる
for idx, row_series in DataFrame.iterrows():
列ごとに違うデータタイプがあれば、個々のrow( seriesオブジェクト ) は、 dtype; object となる。