将 DataFrame 输出到 tsv,如何忽略或覆盖 'need to escape' 错误

Outputting DataFrame to tsv, how to ignore or override 'need to escape' error

.

相关但不同

我想将我的 pandas 数据帧输出到 tsv 文件。我的数据的第一列是一个模式,它实际上包含 3 位信息,我想将它们分成自己的列:

Range                 c1
chr1:2953-2965       -0.001069
chr1:35397-35409     -0.001050
chr1:37454-37466     -0.001330
chr2:37997-38009     -0.001235
chrX:44465-44477     -0.001292

所以我这样做:

Df = Df.reset_index()
Df["Range"] = Df["Range"].str.replace( ":", "\t" ).str.replace( "-", "\t" )
Df
    Range   c1
0   chr1\t2953\t2965    -0.001069
1   chr1\t35397\t35409  -0.001050
2   chr1\t37454\t37466  -0.001330
3   chr2\t37997\t38009  -0.001235
4   chrX\t44465\t44477  -0.001292

我现在需要做的就是不带 header 或索引的输出,再添加一个 '\t' 来分隔最后一列,我将根据需要得到我的 4 列输出文件。不幸的是...

Df.to_csv( "~/testout.bed", 
                  header=None,
                  index=False,
                  sep="\t",
                  quoting=csv.QUOTE_NONE,
                  quotechar=""
               )
Error: need to escape, but no escapechar set

在这里我想忽略这个错误并说“不, python,实际上你不要需要转义任何东西。我把那些制表符放在那里专门用来创建列分隔符。"

我明白为什么会出现这个错误。 Python 认为我忘记了那些选项卡,这是一个安全措施,但实际上我没有忘记任何事情,而且我知道自己在做什么。我知道我数据中的制表符与 column-separators、 无法区分,而这正是我想要的。 我把它们放在那里特别是这个原因。 当然必须有某种方法来覆盖它,不是吗?有什么方法可以忽略错误并强制输出?

您可以简单地使用str.split直接拆分Range列-

df['Range'].str.split(r":|-", expand=True)
#     0      1      2
#0  chr1   2953   2965
#1  chr1  35397  35409
#2  chr1  37454  37466
#3  chr2  37997  38009
#4  chrX  44465  44477

要保留所有列,您只需将此拆分与原始合并即可

df = df.join(df['Range'].str.split(r":|-", expand=True))