Python:pandas.to_csv 添加不需要的引号

Python: pandas.to_csv adds unwanted quotes

我用pd.read_csv读取一个CSV文件,如图:

lisp = pd.read_csv('ida_lisp.ida', header=None, skip_blank_lines=False)

我用键值替换%1%,结果保存到不同的位置,如图:

heating_setpoint_s = [19, 20, 21, 22, 23, 24] 
for i in range(len(heating_setpoint_s)):
    lisp1 = lisp.replace('%1%', str(heating_setpoint_s[i]), regex=True)
    path = "C://Users//nico//"+str(i+1)+"_ida"
    os.chdir(path)
    lisp1.to_csv('ida_lisp.ida', header=False, index=False, na_rep=" ")

除旧 CSV 文件中的一行 MDESIGN "" 外,一切正常:

      K2 0.0
      TAU 1.0
      SPECPUMPPO 349.0
      MDESIGN ""

  MODULE chil
    TYPE SIMCHIL
      NFPLR 0
      COP 3

保存后更改为:

      K1 0.0
      K2 0.0
      TAU 1.0
      SPECPUMPPO 349.0
"      MDESIGN """""

  MODULE chil
    TYPE SIMCHIL
      NFPLR 0
      COP 3

有谁知道如何防止这种情况发生?

根据 pandas 文档,to_csv() 有一个 quotechar= 参数,默认为 ",也许你可以尝试另一个符号,比如 ~,对于引号字符(即 lisp1.to_csv('ida_lisp.ida', header=False, index=False, na_rep=" ", quotechar='~') )。这样您就可以测试问题是否纯粹是由于引号字符而不是您的数据引起的。

我对您的代码做了一些调整以帮助解决这个问题(在 粗体 中)并使事情对您来说更直接一些。

  • 更新了您的 for 循环以直接迭代您的 list,而不是与 range(len()) 调用打交道。
  • 添加了一个 replace 函数来替换字符串中的任何杂散 "
  • 添加了一个 strip 函数来清理所有值以删除任何 leading/trailing 空格,以便输出 CSV 是干净的。
  • 更新了您的文件路径连接以使用 os.path.join
  • 在您的存储目录不存在的情况下添加了一个 os.makedirs 调用。

示例代码:

import os
import pandas as pd

lisp = pd.read_csv('ida_lisp.ida', header=None, skip_blank_lines=False)

heating_setpoint_s = [19, 20, 21, 22, 23, 24] 
for i in heating_setpoint_s:
    lisp1 = lisp.replace('%1%', str(i), regex=True).replace('"+', '', regex=True)
    # Clean column 0, assuming this is the only column, based on sample data provided.
    lisp1 = lisp1.iloc[:, 0].str.strip()
    path = "C:/Users/nico/{}_ida".format(i)
    if not os.path.exists(path):
        os.makedirs(path)
    lisp1.to_csv(os.path.join(path, 'ida_lisp.ida'), header=False, index=False, na_rep="")

来自 CSV 的输入

      K2 0.0
      TAU 1.0
      SPECPUMPPO 349.0
      MDESIGN ""

  MODULE chil
    TYPE SIMCHIL
      NFPLR 0
      COP 3

输出:

K2 0.0
TAU 1.0
SPECPUMPPO 349.0
MDESIGN

MODULE chil
TYPE SIMCHIL
NFPLR 0
COP 3