如何获取另一个字符串中坐标之间的字符串,起始和终止坐标由数据帧中的列指定



我正试图从由基准帧中的坐标指定的基因组中获得序列。

我需要获取开始坐标和停止坐标,使用坐标来获取字符串中的序列,并将该序列附加到列表中。

这是我的df和字符串看起来像

# Import pandas library 
import pandas as pd   
# initialize list of lists 
data = [['x', 3, 13], ['y', 5, 15], ['z', 7, 17]]   
# Create the pandas DataFrame 
df = pd.DataFrame(data, columns = ['Name', 'Start', 'Stop'])   
# print dataframe. 
df 
sequence = "ATGTCGCCGCTGCTGCTGTGTCGTAGTCAGC"

我想遍历数据帧中的开始和停止坐标,并使用这些坐标来分隔序列的部分,并将该部分附加到新的列表中

我已经做到了:

subseq = []
a = sequence[df.iloc[1,1]:df.iloc[1,2]]
subseq.append(a)

我该如何做到这一点以自动循环通过数据帧(idealsl然而,我会逐个列名(

我正在使用python

我认为您不需要数据帧。

我会循环浏览你的原始数据:

data = [['x', 3, 13], ['y', 5, 15], ['z', 7, 17]]   
sequence = "ATGTCGCCGCTGCTGCTGTGTCGTAGTCAGC"
output = []
for d in data:
output.append(sequence[d[1]:d[2]])

更简洁地说:

data = [['x', 3, 13], ['y', 5, 15], ['z', 7, 17]]   
sequence = "ATGTCGCCGCTGCTGCTGTGTCGTAGTCAGC"
output = [sequence[d[1]:d[2]] for d in data]

这两种输出:

['TCGCCGCTGC', 'GCCGCTGCTG', 'CGCTGCTGCT']

您可以使用列表理解:

[sequence[a:b] for a,b in zip(df['Start'], df['Stop'])]

输出:

['TCGCCGCTGC', 'GCCGCTGCTG', 'CGCTGCTGCT']

您也可以将其添加到您的数据帧中:

df['sub'] = [sequence[a:b] for a,b in zip(df['Start'], df['Stop'])]

输出:

Name  Start  Stop         sub
0    x      3    13  TCGCCGCTGC
1    y      5    15  GCCGCTGCTG
2    z      7    17  CGCTGCTGCT

最新更新