2列を参照する関数をパンダのデータフレームに適用しようとしています。関数が参照している1つの列には、文字列変数、その他の整数があります。
次のエラーが発生します ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
以下は私がこれまでに試したことの例です
def sd2_offshore(gas_rate,platform):
if platform=='Stage2':
if 0<gas_rate<900:
return 5
elif gas_rate>900:
return 6
else:
return 0
else:
return 0
df2['Offshore SD2']=df2.apply(lambda row : sd2_offshore(df2['Gas_Rate_avg'],df2['Platform']))
df2['Platform']
文字列値が含まれます。
df2['Gas_Rate_avg']
整数値が含まれています
よろしくお願いします!
編集
以下のデータの例を追加します
Index Platform Gas_Rate_avg
0 Stage2 300
1 Stage2 0
2 Stage2 1100
3 Stage2 1200
4 Stage1 500
期待される出力:
Index Platform Gas_Rate_avg Offshore_SD2
0 Stage2 300 5.00
1 Stage2 0 0.00
2 Stage2 1100 6.00
3 Stage2 1200 6.00
4 Stage1 500 0.00
あなたはaxis=1
適用に欠けていました。この方法で試してください:
def sd2_offshore(row):
if row["Platform"] == "Stage2":
if 0<row['Gas_Rate_avg']<900:
return 5
elif row['Gas_Rate_avg']>900:
return 6
else:
return 0
else:
return 0
df2['Offshore SD2'] = df2.apply(lambda row : sd2_offshore(row), axis=1)
df2
Output(df2
):
Platform Gas_Rate_avg Offshore SD2
Index
0 Stage2 300 5
1 Stage2 0 0
2 Stage2 1100 6
3 Stage2 1200 6
4 Stage1 500 0
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加