PandasのDataFrameの行を反復処理する方法は?
[Python] PandasのDataFrameの行を反復処理する方法は? rows | CODE Q&A [日本語]
こちらのサイトを参考にした.
1.行をSeriesとして取り出す方法
DataFrame.iterrows()を使う
例
for row in df.iterrows():
print("c1 :",row["c1"],"c2 :",row["c2"])
2.行をタプルとして取り出す方法(iterrowsより高速)
DataFrame.itertuples()を使う
例
for row in df.itertuples():
print("c1 :",row.c1,"c2 :",row.c2)
3.apply()メソッドに反復処理してもらう方法(一般にfor文使う場合よりも高速らしい)
DataFrame.apply()を使う
例1
def valuation_formula(x, y):
return x * y * 0.5
df['price'] = df.apply(lambda row: valuation_formula(row['x'], row['y']), axis=1)
例2
def valuation_formula(x):
return x ** 0.5
df = df.apply(valuation_formula, axis=1) #行全体に関数を適用
4.インデックスを指定する方法
例
for ind in df.index:
print(df['c1'][ind], df['c2'][ind])