【问题标题】:difiiculty pandas csv output难度大熊猫 csv 输出
【发布时间】:2015-10-15 12:34:16
【问题描述】:

我编写了以下代码来转置包含数字和字母的数据文件:

import pandas as pd
from pandas import DataFrame
    def step2(file1,file2):
    source=pd.read_csv(file1,header=None,engine='python')
    dest=source.transpose()
    dest.to_csv(file2,sep="\t",header=None, index=None,quoting=3)

现在它总是在输出文件中产生双引号,我阅读了熊猫文档并使用了 doublequotes=None 之类的偶数选项,但仍然产生引号。该文件还提到,为了设置quoting=None,代码应该包含一些转义字符。我尝试将\n 设置为转义字符,然后它确实转义了引号,但在每个元素之后添加了分隔字符。
如何从熊猫 csv 输出中删除双引号? 以下是输入

AU AA GG CC 00 AA TT 

以下是设置doublequotes=False并从上面的代码中删除quoting=3选项后的输出

AU
AA
GG
CC
0
AA
TT

我无法解释代码的行为,它将 00 更改为 0。我正在寻求指导,关于此输出的另一件有趣的事情是:当我使用以下文件格式时:

AU AA GG CC 00 AA
AK AA GG CC AA 00

上述代码似乎可以正常工作:

AU AK
AA AA
GG GG
CC CC
00 AA
AA 00

谁能指导我为什么我在使用单行时得到不同的输出?

【问题讨论】:

  • 不应该是doublequote=False吗?当您将quoting 从默认的None 更改为3 时,您还可以发布您想要的输出吗
  • 你当前的输入是什么?
  • 你用的是什么版本的python?
  • Python 3.4.3 和 Anaconda 2.3.0

标签: pandas transpose quoting


【解决方案1】:

问题在于它将00 解释为数值:

In [364]:
import pandas as pd
import io
t="""AU AA GG CC 00 AA TT"""
df = pd.read_csv(io.StringIO(t),header=None,engine='python', sep=' ')
df = df.transpose()
df

Out[364]:
    0
0  AU
1  AA
2  GG
3  CC
4   0
5  AA
6  TT

对于多行,它按预期工作:

In [365]:
t="""AU AA GG CC 00 AA
AK AA GG CC AA 00"""
df = pd.read_csv(io.StringIO(t),header=None,engine='python', sep=' ')
df = df.transpose()
df

Out[365]:
    0   1
0  AU  AK
1  AA  AA
2  GG  GG
3  CC  CC
4  00  AA
5  AA  00

所以我认为以上可能是一个错误。

如果您将引擎更改为默认引擎并指定dtype,那么它将起作用:

In [373]:
t="""AU AA GG CC 00 AA"""
df = pd.read_csv(io.StringIO(t),header=None, sep=' ', dtype=str)
df.T

Out[373]:
    0
0  AU
1  AA
2  GG
3  CC
4  00
5  AA

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多