我有一个像这样的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函数组合使用:


  拉链,拆分,融化,连拍


但以某种方式对我不起作用

最佳答案

在理解中使用zipsplit

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

08-20 03:02