barilog

エンジニアリング見習い雑記

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])