use*_*780 3 csv escaping quoting export-to-csv pandas
出于某种原因,我需要以这种格式输出到 csv 并在每列名称周围加上引号,我想要的输出如下所示:
"date" "ret"
2018-09-24 0.00013123989025119056
Run Code Online (Sandbox Code Playgroud)
我正在尝试
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=' ')
Run Code Online (Sandbox Code Playgroud)
并得到如下输出:
"""date""" 'ret'
2018-09-24 0.00013123989025119056
Run Code Online (Sandbox Code Playgroud)
我似乎无法找到一种使用引号将列换行的方法。有谁知道怎么做?谢谢。
我的解决方案: 使用 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)
Run Code Online (Sandbox Code Playgroud)
然后我得到
"date" "ret"
2018-09-24 0.00013123989025119056
Run Code Online (Sandbox Code Playgroud)
这称为引用输出。不要手动在列名中加上引号(这会干扰其他数据框功能),而是使用以下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"
Run Code Online (Sandbox Code Playgroud)
“正确”的方法是使用quoting=csv.QUOTE_ALL(和可选escapechar='\\'),但请注意,这QUOTE_ALL将强制引用所有列,甚至是像索引这样的数字列;如果我们没有指定index=None,我们会得到:
"" "date" "ret"
"0" "2018-09-24" "0.00013123989025119056"
Run Code Online (Sandbox Code Playgroud)
csv.QUOTE_MINIMAL 拒绝引用这些字段,因为它们并不严格需要引号(它们既不是多行也不是包含内部引号或分隔符)IIUC,您可以使用该quoting参数csv.QUOTE_NONE
import csv
df.to_csv('test.csv',sep=' ',quoting=csv.QUOTE_NONE)
Run Code Online (Sandbox Code Playgroud)
您生成的 csv 将如下所示:
"date" "ret"
0 2018-09-24 0.00013123989025119056
Run Code Online (Sandbox Code Playgroud)
旁注:为了方便向您的列添加引文,您可以使用add_prefix和add_suffix。如果您的起始数据框如下所示:
>>> df
date ret
0 2018-09-24 0.000131
Run Code Online (Sandbox Code Playgroud)
然后做:
df = df.add_suffix('"').add_prefix('"')
df.to_csv('test.csv',sep=' ',quoting=csv.QUOTE_NONE)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12283 次 |
| 最近记录: |