我有一个像这样的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
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