excel表2 的数据,逐列导入表1,分别计算出数据在表3输出?
给一种编程解决方案,基本思路是把先读取表二,把表二中有数据的列提取出来做为输入数组,根据不同列的输入计算出对比数据列,根据题主给的公式,运算数据前两个为20和40(题主公式中40也是计算出来的,按照公式,这个必然是40,不受其他影响,所以直接给定40),第三个开始需要参考结果列计算,结果列数据通过同一行前三组数据计算得出,编程代码如下,其中test.xlsx为表二,test1.xlsx是结果数据,即表三
import pandas as pd
df = pd.read_excel('test.xlsx')
datas = []
for c in df.columns:
lst = [int(d) for d in df[c] if not pd.isna(d)]
if len(lst)>0:
datas.append(lst)
com_datas = []
for data in datas:
cd = [data[i+1] if i<len(data)-1 and data[i]==data[i+1] else data[i] for i in range(len(data))]
com_datas.append(cd)
calc_datas = []
result_datas = []
for i in range(len(datas)):
data = datas[i]
com_data = com_datas[i]
calc_data = []
result_data = []
for j in range(len(data)):
if j==0:
calc_data.append(20)
elif j==1:
calc_data.append(40)
else:
#=IFS(E5=-160,320,E5=-320,640,E5=-640,0,E5=40,80,AND(E4=-40,E5=-40),80,AND(E4<0,E5=-80),160,TRUE,40)
if result_data[j-1]==-160 or result_data[j-1]==-320:
calc_data.append(result_data[j-1]*-2)
elif result_data[j-1]==-640:
calc_data.append(0)
elif result_data[j-1]==40 or (result_data[j-1]==-40 and result_data[j-2]==-40):
calc_data.append(80)
elif result_data[j-1]==-80 and result_data[j-2]<0:
calc_data.append(160)
else:
calc_data.append(40)
if j<len(data)-2:
result_data.append((-1)**(com_data[j]+data[j+2])*calc_data[j])
else:
result_data.append(-1*calc_data[j])
calc_datas.append(calc_data)
result_datas.append(result_data)
print(data[1])
print(com_datas[1])
print(calc_datas[1])
print(result_datas[1])
df1 = pd.DataFrame()
maxlen = max([len(rd) for rd in result_datas])
for i in range(len(result_datas)):
while len(result_datas[i])<maxlen:
result_datas[i].append(float('nan'))
df1['结果'+str(i+1)] = result_datas[i]
df1.to_excel('test1.xlsx')
表二:
把需求再描述清楚点,数据的算法是怎么样的?场景是怎样的?三个表是在不同的文件还是不同的工作表?或者在同一工作表里?
把需求描述清楚了别人才能准确地帮助到你。
请把问题描述清楚