2016-11-01 7 views
1

Pythonでデータフレームを通してforループを正しく実行するのに問題があります。Python Dataframe for loop構文

基本的に、データフレーム(df_weather)のすべての行について、コードは列番号からそれぞれ1つの値を選択する必要があります。コード中で先に定義した関数を実行する。最終的には、各行の計算値を合計して1つの最終的な答えを得ることが必要です。次のようにエラーが返される

は次のとおりです。

リクエスト誰もがこのステップを通して私を助けるために、「文字列のインデックスは整数でなければなりません」。同じコードを以下に示します。

ありがとうございます!

stress_rate = 0 
for i in df_weather: 
    b = GetStressDampHeatParameterized(i[:,13], i[:,14]) 
    stress_rate = b + stress_rate 
print(stress_rate) 
+0

df_weather.head() '' '?, – wwii

答えて

0

これは、一列に解決することができる。

FUNCが希望する機能と軸= 1であり、各列(とは対照的に、機能は、各列に適用されることを保証され
print sum(df.apply(lambda row: func(row[14], row[15]), axis=1)) 

デフォルト)。

私の解決策は、最初に関数を各行に交互に適用することによって構築される一時的な系列(画像:非連結列)を作成します。実際に適用されている関数は、ラムダで表される無名関数であり、applyメソッドから一度に1行ずつ供給されるローの行を受け取ります。その無名関数は単に関数funcを呼び出し、行の2つの列の値を渡します。

シリーズは、の合計機能を使用して合計することができます。列を反復します:列のインデックスは0

から始まり

注意もDFでのxに対して言って、注意してください。

+0

それはうまく動作します!助けてくれてありがとう。あなたのコメントを感謝:) – Shantanu

0

あなたの番号一つの問題は、次の行である:

for i in df_weather:この行は、実際にあなたのコラムのタイトルではなく、行に自分自身を得ています。あなたが探しているのは実際には次のとおりです:

for i in df_weather.values():valuesは、繰り返し処理できる配列が返されます。しかし問題は、変数iが今や行列の1行になるということです。

+0

またはDataFrame.iterrows、DataFrameを投稿できますか? itertuples – wwii