gpt4 book ai didi

python - pandas:使用不带引号的文字制表符编写制表符分隔的数据框

转载 作者:太空狗 更新时间:2023-10-30 00:54:32 25 4
gpt4 key购买 nike

我必须为需要将每一列分成两列的遗传学软件重新格式化我的数据,例如 0-> G G; 1-> A G; 2 -> A A;。输出文件应该是制表符分隔的。我正试图在 Pandas 中做到这一点:

import csv
import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(0,3, size = (10,5)),
columns=[ chr(c) for c in range(97, 97+5) ])

def fake_alleles(x):
if x==0:
return "A\tA"
if x==1:
return "A\tG"
if x==2:
return "G\tG"

plinkpast6 = df.applymap(fake_alleles)
plinkpast6.to_csv("test.ped", sep="\t", quoting=csv.QUOTE_NONE)

这给了我一个错误错误:需要转义,但没有设置转义符pandas 还有其他方法吗?

最佳答案

sep="\t" 试图获取数据框行的每个元素并在其间插入一个 "\t"。问题是元素中有 "\t" 并且它令人困惑。它希望您转义元素中的那些 "\t" 而您没有。我怀疑您希望最终输出为 6 列。

试试这个:

import csv
import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(0,3, size = (10,20)))

def fake_alleles(x):
if x==0:
return "A\tA"
if x==1:
return "A\tG"
if x==2:
return "G\tG"

plinkpast6 = df.iloc[:,:3].applymap(fake_alleles)
plinkpast6 = plinkpast6.stack().str.split('\t', expand=True).unstack()
plinkpast6.to_csv("test.ped", sep="\t", quoting=csv.QUOTE_NONE)

关于python - pandas:使用不带引号的文字制表符编写制表符分隔的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37357727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com