我有一个像这样的 Python Pandas DataFrame(NCBI RefSeq 的 UCSC 模式):
chrom exonStart exonEnds name
chr1 100,200,300 110,210,310 gen1
chr1 500,700 600,800 gen2
chr2 50,60,70,80 55,65,75,85 gen3
我想将 exonStarts 和 exonEnds 的值配对,并将它们作为单独的行(保留相应信息的其余部分):
chrom exonStart exonEnds name
chr1 100 110 gen1
chr1 200 210 gen1
chr1 300 310 gen1
chr1 500 600 gen2
chr1 700 800 gen2
chr2 50 55 gen3
chr2 60 65 gen3
chr2 70 75 gen3
chr2 80 85 gen3
我正在考虑使用 python/pandas 函数的组合:
zip, split, melt, concat
但不知何故它对我不起作用
请您参考如下方法:
在理解中使用zip 和split
pd.DataFrame([
[c, s, e, n]
for c, S, E, n in df.itertuples(index=False)
for s, e in zip(S.split(','), E.split(','))
], columns=df.columns)
chrom exonStart exonEnds name
0 chr1 100 110 gen1
1 chr1 200 210 gen1
2 chr1 300 310 gen1
3 chr1 500 600 gen2
4 chr1 700 800 gen2
5 chr2 50 55 gen3
6 chr2 60 65 gen3
7 chr2 70 75 gen3
8 chr2 80 85 gen3
