Pandas 导出 to_csv() 并在列名两边加上引号

Pandas exporting to_csv() with quotation marks around column names

出于某种原因,我需要以这种格式输出到 csv,并在每列名称周围加上引号,我想要的输出如下所示:

"date" "ret"
2018-09-24 0.00013123989025119056

我正在尝试

import csv
import pandas as pd

Y_pred.index.name = "\"date\""
Y_pred.name = "\'ret\'"
Y_pred = Y_pred.to_frame()
path = "prediction/Q1/"
try:
    os.makedirs(path)
except:
    pass

Y_pred.to_csv(path+instrument_tmp+"_ret.txt",sep=' ')   

并得到如下输出:

"""date""" 'ret'
2018-09-24 0.00013123989025119056

我似乎找不到使用引号来换行的方法。有谁知道怎么做?谢谢。

我的解决方案: 使用 quoting=csv.QUOTE_NONE 和 Y_pred.index.name = "\"date\"", Y_pred.name = "\"ret\""

Y_pred.index.name = "\"date\""
Y_pred.name = "\"ret\""
Y_pred = Y_pred.to_frame()
path = "prediction/Q1/"
try:
    os.makedirs(path)
except:
    pass

Y_pred.to_csv(path+instrument_tmp+"_ret.txt",sep=' ',quoting=csv.QUOTE_NONE)   

然后我得到

"date" "ret"
2018-09-24 0.00013123989025119056

IIUC,您可以将 quoting 参数与 csv.QUOTE_NONE

一起使用
import csv
df.to_csv('test.csv',sep=' ',quoting=csv.QUOTE_NONE)

您生成的 csv 将如下所示:

 "date" "ret"
0 2018-09-24 0.00013123989025119056

旁注:为了便于在您的专栏中添加引文,您可以使用add_prefixadd_suffix。如果您的起始数据框如下所示:

>>> df
         date       ret
0  2018-09-24  0.000131

然后做:

df = df.add_suffix('"').add_prefix('"')
df.to_csv('test.csv',sep=' ',quoting=csv.QUOTE_NONE)

这称为引用输出。 不要手动将引号插入您的列名(这会混淆其他数据框功能),而是使用 quoting 选项:

df = pd.DataFrame({"date": ["2018-09-24"], "ret": [0.00013123989025119056]})

df.to_csv("out_q_esc.txt", sep=' ', escapechar='\', quoting=csv.QUOTE_ALL, index=None)
"date" "ret"
"2018-09-24" "0.00013123989025119056"

'correct' 方法是使用 quoting=csv.QUOTE_ALL(和可选的 escapechar='\'),但请注意 QUOTE_ALL 将强制 all 列被引用,即使是像索引这样明显的数字列;如果我们没有指定 index=None,我们会得到:

"" "date" "ret"
"0" "2018-09-24" "0.00013123989025119056"
  • csv.QUOTE_MINIMAL 拒绝引用这些字段,因为它们并不严格需要引号(它们既不是多行的,也不包含内部引号或分隔符)