如何用Python/Pandas将[1x6]行向量逐元素追加到Excel列?
解决方法
首先修正你代码中的语法错误:P1_sch=pd.ExcelWriter np.multiply(...)这行写法错误,pd.ExcelWriter是创建Excel写入器的工具,不能直接和计算函数连用,需先算出数值结果再处理写入。
要将P1_sch到P6_sch的结果逐元素写入Excel的6列,推荐用Pandas的DataFrame统一管理结果,再批量写入,效率更高。
修正后的实现步骤
- 把所有计算得到的行向量收集到一个列表中
- 将列表转换为DataFrame,适配Excel的列结构
- 使用
pd.ExcelWriter以追加模式打开文件,把结果写入指定位置
完整代码示例
import numpy as np import pandas as pd # 读取Excel数据 s = pd.read_excel('ECOMP TRACKING.xlsx', sheet_name='SCHEDULE') S = s.to_numpy() veh = np.array(S[:, 0])[np.newaxis] V_sch = S[:, 1:] e = pd.read_excel('ECOMP TRACKING.xlsx', sheet_name='EBOM') E = e.to_numpy() veh1 = np.array(E[:, 2])[np.newaxis] # 初始化列表存储所有计算结果 results = [] b_1 = veh1.size i = 0 while i < b_1: # 计算对应车辆的结果并加入列表 if veh1[0][i] == veh[0][0]: results.append(np.multiply(V_sch[0][:], E[i][5] * E[i][6])) elif veh1[0][i] == veh[0][1]: results.append(np.multiply(V_sch[1][:], E[i][5] * E[i][6])) elif veh1[0][i] == veh[0][2]: results.append(np.multiply(V_sch[2][:], E[i][5] * E[i][6])) elif veh1[0][i] == veh[0][3]: results.append(np.multiply(V_sch[3][:], E[i][5] * E[i][6])) elif veh1[0][i] == veh[0][4]: results.append(np.multiply(V_sch[4][:], E[i][5] * E[i][6])) elif veh1[0][i] == veh[0][5]: results.append(np.multiply(V_sch[5][:], E[i][5] * E[i][6])) i += 1 # 转换为DataFrame,每行对应一个P_sch结果 results_df = pd.DataFrame(results) # 写入Excel with pd.ExcelWriter('ECOMP TRACKING.xlsx', mode='a', if_sheet_exists='overlay') as writer: # 示例:写入到SCHEDULE工作表的第7列(G列)开始,从第2行跳过表头 results_df.to_excel(writer, sheet_name='SCHEDULE', startcol=6, startrow=1, index=False, header=False)
特殊场景调整
如果需要将每个P_sch结果单独写入一列(如P1_sch到A列,P2_sch到B列...),只需转置DataFrame后写入:
results_df = pd.DataFrame(results).T with pd.ExcelWriter('ECOMP TRACKING.xlsx', mode='a', if_sheet_exists='overlay') as writer: results_df.to_excel(writer, sheet_name='SCHEDULE', startcol=0, startrow=0, index=False, header=False)
内容的提问来源于stack exchange,提问作者Harshkt2904
相关产品推荐
相关产品推荐

