我有以下数据:
df = pd.DataFrame({'date' : ['2020-6','2020-07','2020-8'], 'd3_real':[1.2,1.3,0.8], 'd7_real' : [1.5,1.8,1.2], 'd14_real':[1.9,2.1,1.5],'d30_real' : [2.1, 2.2, 1.8],
'd7_mul':[1.12,1.1,1.15],'d14_mul':[1.08, 1.1, 1.14],'d30_mul':[1.23,1.25,1.12]})dX_real指的是第3天、第7天和第14天的实际值。第二个是那个特定日子的每个乘数。
我想用下面的方法来计算这些预测。首先,我接受目标列(d3_real,d7_real.)然后根据具体情况,对每个乘数进行乘法。例如,要计算从d3_real到d30的预测,我需要将其乘以D7、D14和D30的乘数。
df['d30_from_d3'] = df.iloc[:,1] * df.iloc[:,5] * df.iloc[:,6] * df.iloc[:,7]
df['d30_from_d7'] = df.iloc[:,2] * df.iloc[:,6] * df.iloc[:,7]
df['d30_from_d14'] = df.iloc[:,3] * df.iloc[:,7]有什么办法用循环来自动完成这个任务吗?我不知道如何乘每个dX_real列,而不对每一种情况使用条件,因为乘法的次数会发生变化。
这就是我所尝试的--它没有像预期的那样起作用,因为它只是在乘以第一个乘数:
pos_reals = [1,2,3]
pos_mul = [5,6,7]
clases = ['d3', 'd7','d14']
for target in pos_reals:
for clase in pos_mul:
df[f'f{clases}_hm_p_d30'] = df.iloc[:,target]但是,从这里开始,我不知道如何具体说明它需要基于d3、d7和d14进行乘法的值。
谢谢!
发布于 2022-06-16 15:45:50
bbb = [[1, 5, 6, 7], [2, 6, 7], [3, 7]]
ddd = ['d30_from_d3', 'd30_from_d7', 'd30_from_d14']
for i in range(0, len(ddd)):
df[ddd[i]] = df.iloc[:, bbb[i][0]]
for x in range(1, len(bbb[i])):
df[ddd[i]] = df[ddd[i]] * df.iloc[:, bbb[i][x]]输出
date d3_real d7_real d14_real d30_real d7_mul d14_mul d30_mul \
0 2020-6 1.2 1.5 1.9 2.1 1.12 1.08 1.23
1 2020-07 1.3 1.8 2.1 2.2 1.10 1.10 1.25
2 2020-8 0.8 1.2 1.5 1.8 1.15 1.14 1.12
d30_from_d3 d30_from_d7 d30_from_d14
0 1.785370 1.99260 2.337
1 1.966250 2.47500 2.625
2 1.174656 1.53216 1.680 这里,第一个循环从'ddd‘列表中选择新列的名称,并在新列中设置第一个值。在嵌套循环中,从列表'bbb‘中获取所需列的数目,并乘以这些值。检查您的数据或显示预期的结果与您的例子。你需要检查一下是否匹配。
https://stackoverflow.com/questions/72648002
复制相似问题