我正在尝试应用函数,这是指2列熊猫的数据。函数所引用的一个列有字符串变量,其他整数。
我得到了一个以下错误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发布于 2020-06-22 09:01:26
你在申请中错过了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输出(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 0https://stackoverflow.com/questions/62503288
复制相似问题