Skip to main content
 首页 » 编程设计

python之Pandas :用列表分隔行的记录

2025年05月04日14insus

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