首页 > 解决方案 > 根据等式对两个数据帧中的行求和

问题描述

我有 2 个矩阵 df:距离 df:

   1   2  
1  20 50 
2   5 10 

时间df:

  1  2  
1  3 8
2  5 1

我想根据以下等式获得每行的总和值: e^ (-b1 i-b2 j) 对于 df 中的每一行(两个 df 具有相同的行数),而 b1 和 b2 是参数我稍后会优化。 例如,我想要结果:

id     result
1   e^ (-b1*20 -b2*3) + e^ (-b1*50-b2* 8)
2   e^ (-b1*5-b2*5) + e ^ (-b1*10-b2*1)

我试过这段代码:

beta1=beta2=2
result=[]
for i in range(dist_df.shape[0]):
    result.append(beta2*beta1*(np.sum([np.exp(-beta1*time_df.iloc[0,i]-beta2*dist_df.iloc[0,i])]))) # for herd 255
    i=i+1
print(result)    
total=sum(result)
print("SUM: " , total)

但我需要为每个 id 手动完成

标签: pythonpandasdataframe

解决方案


首先,您可以为功率数创建一个数据框:

df = -b1 * df1 -b2 * df2

然后你可以使用apply得到你的最终结果:

df = df.apply(lambda x: sum(math.exp(i) for i in x))

推荐阅读