我编写了以下代码来转置包含数字和字母的数据文件:
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)
现在它总是在输出文件中产生双引号,我读了pandas文档并使用了doublequotes=None
这样的偶数选项,但仍然会产生引号。该文档还提到,为了设置quoting=None
,代码应该包含一些转义字符。我尝试将\n
设置为转义字符然后它确实转义引号但在每个元素后添加分隔字符。
如何从pandas csv输出中删除doblequote?
以下是输入
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
任何人都可以指导我为什么在使用单行时获得不同的输出?
答案 0 :(得分: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