【问题标题】:Python for loop save only last value to csv?Python for循环仅将最后一个值保存到csv?
【发布时间】:2020-06-03 04:17:03
【问题描述】:

在打印区域期间用于轮廓检测及其相应面积计算的代码行下方,所有值都被打印,但在保存时只保存最后一个值,保存在 CSV 文件中

for cnt in contours:

    M= cv2.moments(cnt)
        #print(M)

    if M["m00"] != 0:

        cx = int(M["m10"] / M["m00"])
        cy = int(M["m01"] / M["m00"])
    else:
        cx, cy = 0,0

    center = (cx,cy)


    area = cv2.contourArea(cnt)
    #V1 = np.asarray(area)
    print(area)

    df = pd.DataFrame()
    df['Area'] = area

    df.to_csv("C:\pfm\dataframe_csv\L501.csv")

【问题讨论】:

    标签: python-3.x


    【解决方案1】:

    在循环的每次迭代中,您都会创建一个新的空 DataFrame,将一个东西放入其中,然后将其写入文件。每次,它都会覆盖前一个输出,最后剩下的是最后一个。发生这种情况是因为文件默认以写入模式打开。

    (如果“写入模式”对您来说毫无意义,您应该在您最喜欢的语言参考中查看 Python 文件打开模式。)

    幸运的是,to_csv 函数有一个mode 参数,您可以将其设置为“a”以打开文件进行追加。如果这样做,则每次写入都应附加到文件的末尾。

    或者,您可以将所有输出累积到一个大 DataFrame 中,并在循环终止后将整个输出写入一次。这可能会更快,但需要更多内存。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-11
      • 2019-05-15
      • 2015-06-02
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 2019-07-08
      • 2019-09-20
      相关资源
      最近更新 更多