pandas :带有列表的记录以分隔行 [英] pandas: records with lists to separate rows

查看:109
本文介绍了 pandas :带有列表的记录以分隔行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个像这样的Python Pandas DataFrame(用于NCBI RefSeq的UCSC模式):

I have a Python Pandas DataFrame like this (UCSC schema for NCBI RefSeq):

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中的值配对,并将它们放在单独的行中(保留其余的相应信息):

and I'd like to pair values from exonStarts and exonEnds and put them as separate rows (keeping the rest of corresponding information):

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函数组合使用:

I was thinking to use combinations of python/pandas functions as:

压缩,拆分,合并,合并

zip, split, melt, concat

但是它对我不起作用

推荐答案

在理解中使用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

这篇关于 pandas :带有列表的记录以分隔行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆