当前位置: 首页 > 知识库问答 >
问题:

熊猫to_csv输出引用问题

蒋骏
2023-03-14

获取熊猫数据帧时遇到问题。到_csv(…) 输出右引号字符串。

import pandas as pd

text = 'this is "out text"'
df = pd.DataFrame(index=['1'],columns=['1','2'])
df.loc['1','1']=123
df.loc['1','2']=text
df.to_csv('foo.txt',index=False,header=False)

输出为:

123,"这是"外出文本""

但我想:

123,这是“外文本”

有人知道怎么做对吗?


共有3个答案

訾朗
2023-03-14

使用quoting=csv。QUOTE_NONE,您需要设置escapechar,例如。

# Create a tab-separated file with quotes
$ echo abc$'\t'defg$'\t'$'"xyz"' > in.tsv
$ cat in.tsv
abc defg    "xyz"

# Gotcha the quotes disappears in `"..."`
$ python3
>>> import pandas as pd
>>> import csv
>>> df = pd.read("in.tsv", sep="\t")
>>> df = pd.read_csv("in.tsv", sep="\t")
>>> df
Empty DataFrame
Columns: [abc, defg, xyz]
Index: []


# When reading in pandas, to read the `"..."` quotes,
# you have to explicitly say there's no `quotechar`
>>> df = pd.read_csv("in.tsv", sep="\t", quotechar='\0')
>>> df
Empty DataFrame
Columns: [abc, defg, "xyz"]
Index: []

# To print out without the quotes.
>> df.to_csv("out.tsv", , sep="\t", quoting=csv.QUOTE_NONE, quotechar="",  escapechar="\\")
庾兴发
2023-03-14

注意:Pandas to_字符串文档中目前存在一个小错误。它说:

  • quoting:int,控制是否应识别引号。值取自csv。引用*值。QUOTE_MINIMAL、QUOTE_ALL、QUOTE_NONE和QUOTE_NONNUMERIC的可接受值分别为0、1、2和3,

但这与csv定义QUOTE_NONE和QUOTE_非数值变量的方式相反。

In [13]: import csv
In [14]: csv.QUOTE_NONE
Out[14]: 3
康鹏云
2023-03-14
匿名用户

您可以通过引用=csv。QUOTE_NONE,例如:

>>> df.to_csv('foo.txt',index=False,header=False)
>>> !cat foo.txt
123,"this is ""out text"""
>>> import csv
>>> df.to_csv('foo.txt',index=False,header=False, quoting=csv.QUOTE_NONE)
>>> !cat foo.txt
123,this is "out text"

但根据我的经验,最好多引用,而不是少引用。

 类似资料:
  • 问题内容: 我正在使用to_csv将Multiindex DataFrame写入csv文件。csv文件的一列包含元组中的多索引,例如: 但是,我希望能够将Multiindex输出到两列而不是一列的元组,例如: 看起来可以为列实现此目的,但对于行则没有这样的选择。有没有办法做到这一点? 问题答案: 我认为这可以做到 使用索引重复来编写(虽然有点骇人听闻) 回读实际上有点棘手

  • 我试图将CSV字符串导出到D3 Web应用程序,但是命令坚持向数据添加尾随0,这阻止了D3的正确使用。 这里有一个简单的例子来说明这个问题。 我的(简化)数据帧是: 包含一个,如下所示: 然后根据这个答案,我运行要获取我想要的格式,请执行以下操作: 现在,包含一个

  • 我在试着按照这里的一些答案做,但是当我设置 我收到错误。我做错了什么? 我正在运行pandas。

  • 我正在从pandas输出一个csv文件,其中包含一些用于latex报告的调查文本。一些响应在其响应中带有逗号,因此熊猫将数据输出为 通过将字段用双引号括起来,显然可以处理字段中的逗号。 我希望上面看起来像这样: 通过将所述字段包装在{}中,因为这是latex包可以理解的分隔符。 有没有办法告诉熊猫。要做这个吗? 我已经尝试了以下方法 当然,当我需要“}”时,它会用“{”关闭文本包装 更新当我使用p

  • 我正在编写一个代码,将滚动窗口应用于返回多列的函数。 输入:熊猫系列 预期输出:3列数据帧 res的内容: 错误: 我尝试过的: 在应用中更改原始=真 在应用中使用lambda函数 以列表/numpy数组/dataframe/series的形式返回fun1中的结果 我还浏览了SO中的许多相关帖子,以陈述以下几点: 熊猫-使用`。滚动()`在多个列上 但是指定的解决方案都没有解决这个问题。 有没有直

  • 问题内容: 另一个熊猫问题。 阅读韦斯·麦金尼(Wes Mckinney)关于数据分析和熊猫的出色著作,我遇到了以下我认为应该起作用的事情: 假设我有一些有关提示的信息。 我想知道与总费用有关的五个最大技巧,即分别针对吸烟者和不吸烟者。所以这有效: 足够好了,但是然后我想使用pandas的transform来做类似的事情: 但是我得到了这个: 为什么?我知道转换需要返回与输入相同尺寸的数组,因此我