Pandas执行multiply操作报错ValueError:无法将Series列表转为Series/DataFrame
问题修复方案
报错原因
错误出现在A_j的定义行,你将D_j/Ds_j的计算结果(本身是pandas Series类型)额外套了一层列表括号:
# 错误写法 A_j = [D_j/Ds_j]
此时A_j是长度为1的嵌套列表,唯一元素为Series对象,pandas的multiply方法无法将该结构转换为可参与矩阵运算的Series/ DataFrame,因此触发对应ValueError。
修复代码
仅需调整第0次迭代的A_j、B_j定义部分即可:
# 第0次迭代 修改后代码 Os_i = grav.sum(axis='columns') # 阻抗函数行求和 Ds_j = grav.sum(axis='index') # 阻抗函数列求和 O_i = trips_df['Ps'] # 2041年预测出行起点出行量 D_j = trips_df['As'] # 2041年预测出行终点出行量 B_j = pd.Series([1, 1, 1], index=trips_df.index) # 转为带索引的Series,避免后续迭代出现索引对齐问题 A_j = D_j/Ds_j # 去掉外层多余列表括号,直接保留计算得到的Series
调整后再次运行迭代部分代码即可正常输出结果。
内容的提问来源于stack exchange,提问作者rb1705
相关产品推荐
相关产品推荐

