将DataFrame转数组后求和保存CSV遇ValueError:期望1D/2D数组却得到0D数组
问题分析与解决建议
首先,触发Expected 1D or 2D array, got 0D array instead错误的核心原因是你调用np.savetxt时的参数顺序完全混乱了,同时还有文件名重复后缀的问题,咱们一步步来修正:
1. 错误的np.savetxt参数顺序
np.savetxt的标准调用逻辑是:
np.savetxt(保存的文件名, 要保存的数组, 格式字符串, 分隔符, ...)
你原来的代码把格式字符串、文件名、数组的位置全搞反了,这直接导致函数无法正确识别输入的数组,进而抛出维度错误。
2. 重复的.csv后缀
你的filename变量已经通过字符串拼接加上了.csv后缀,不需要在np.savetxt里再额外加一遍,否则会生成类似calculated_xxx.csv.csv的错误文件名。
修正后的完整代码片段
array = dfmain.values shareArray = array[:1] shareArray = dividedPV / shareArray array = shareArray * array sums = [sum(j) for j in array] finalArray = np.array(sums, dtype=np.float16) # 生成正确的文件名(已包含.csv) filename = "calculated_%s_%s_%s.csv" % (portName, inceptionDate, frequency) # 修正后的np.savetxt调用 np.savetxt(filename, finalArray, delimiter=",", fmt="%0.4f")
额外验证(可选)
如果还是担心维度问题,可以在保存前加一行代码确认finalArray的维度:
print(finalArray.ndim) # 正常应该输出1,代表一维数组,符合savetxt的要求
另外,fmt参数可以根据你的需求调整,比如"%f"保留全部小数位,"%0.2f"保留两位小数,按需选择即可。
内容的提问来源于stack exchange,提问作者lee.edward01
相关产品推荐
相关产品推荐

