我试图创建一个函数,根据(收入预算)计算利润。收入中有0个我不想在计算中使用的值。你知道吗
这是我到目前为止所做的,但它正在抛出错误 ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。你知道吗
# Function to calcuate the profit only when there is a non 0 value for Budget var1- revenue, var2 - budget, var3 profit
def profit_cal(var1,var2,var3):
if(org_data[var1]!=0):
org_data[var3]=org_data[var1]-org_data[var2]
else:
org_data[var3]=0
return(org_data[var3])
profit_cal('revenue','budget','profit')
得到该错误是因为if语句正在检查列作为一个整体是否等于0。这将取决于每个值,因此它认为它是“不明确的”。你知道吗
我能想出三种不同的方法来达到你想要的结果。你知道吗
首先,@Wen建议的版本(他只是错过了一个符号):
现在,迭代抛出每一行以检查预算值是否等于0的版本:
最后,计算整个表的“利润”,然后用0替换不需要的值:
让我们用%timeit来看看哪一个效率最高!你知道吗
结果:
每个回路873µs±4.12µs(7次运行的平均值±标准偏差,每个回路1000个)
每个回路1.07 s±4.46 ms(7次运行的平均值±标准偏差,每个回路1次)
每个回路3.41 ms±86.5µs(7次运行的平均值±标准偏差,每个100个回路)
第一个功能是最快的!你知道吗
现在,您似乎在尝试使函数变得灵活(因为您允许使用不同的列名)。我是否可以建议将数据帧本身的名称也作为函数的参数?你知道吗
这将是功能1的更新版本,具有额外的灵活性:
请记住,您必须再输入一个参数:
好好享受!你知道吗
相关问题 更多 >
编程相关推荐