我正在尝试为dataframe2中可用的每一列将一个值从dataframe2乘以dataframe1。(如果该列在dataframe2中不可用,则必须跳过)
Dataframe1 Dataframe2
Day SPAN1 SPAN2 SPAN Growth_Factor
4/4/2014 38 289 SPAN1 20%
4/5/2014 188 324 SPAN2 150%
4/6/2014 0 118
4/7/2014 0 139
4/8/2014 0 0
4/9/2014 118 0
4/10/2014 14 0
4/11/2014 221 135
4/12/2014 199 39
4/13/2014 347 12
现在,我想对dataframe1的每一行应用以下计算,其中“SPAN1-OLD”与dataframe1相同,“SPAN1-NEW”是我要应用的计算
SPAN1-OLD SPAN1-NEW Calculation
38 38 = 38 - Row1 Remain same as OLD data
188 196 = 188 + (38*20%) - The 20% of above value + OLD value
0 39 = 0 + (196*20%) - ROW2 calculation Applicable for all below row
0 8 = 0 + (39*20%)
0 2 = 0 + (8*20%)
118 118 = 118 + (2*20%)
14 38 = 14 + (118*20%)
221 229 = 221 + (38*20%)
199 245 = 199 + (229*20%)
347 396 = 347 + (245*20%)
* 20% arrived from the dataframe2 (when Columnname in dataframe1 and Row of dataframe2 will match)
我正在尝试下面的代码,但它并没有像我预期的那样帮助我
name = list(list(list(dataframe2.T.to_dict(orient='split').values())[2:])[0])[0]
val = list(list(list(dataframe2.T.to_dict(orient='split').values())[2:])[0])[1]
res = {}
for key in name:
for value in val:
res[key] = value
val.remove(value)
break
res
a = list(dataframe1.columns)
b = list(dataframe2.iloc[:,0])
for i in [x for x in a if x in b]:
dataframe1[i] = (dataframe1[i] * res.get(i))
在应用计算中提到的更改后,我的预期结果如下:
Dataframe1
Day SPAN1 SPAN2
4/4/2014 38 289
4/5/2014 196 758
4/6/2014 39 1254
4/7/2014 8 2020
4/8/2014 2 3031
4/9/2014 118 4546
4/10/2014 38 6819
4/11/2014 229 10363
4/12/2014 245 15584
4/13/2014 396 23388
为了获得理想的输出,我应该在上述代码中包括/更改什么
谢谢
目前没有回答
相关问题 更多 >
编程相关推荐