我如何根据Python中的特定行划分列中的值?

时间:2016-06-30 14:41:10

标签: python

我有一个标签文件,我想将基因的特征(上游,下游,最低,注释或...)划分为标准特征。 最后两列是我想要生成的cond_a和cond_b的结果列。 我正在编写一个代码,以便能够保存元组中的每一行,然后搜索元组并进行分割,但这对我来说很困惑。 我怎么能用Python做到这一点?

for line in open(myfile,"r").readlines():
    Fld = line.strip().split("\t")
    gene,feature,cond_a,cond_b= Fld[0],Fld[1],int(Fld[2]),int(Fld[3])

gene feature  cond_a cond_b     
A   upstream    2      5    2/5   5/8
A   standard    5      8    5/5   8/8
C   standard    4      23   4/4   23/23
D   downstrs    3      1    3/9   1/5
D   standard    9      5    9/9   5/5
H   standard    2      9    2/2   9/9
H   downupst    1      2    1/2   2/9
H   annotate    4      8    4/2   8/9

2 个答案:

答案 0 :(得分:0)

很难准确说出你想要的东西(为了将来参考它最好省略与字段相关而不是编程相关的技术细节 - 让我们这些一无所知的人更容易关于帮助的基因),我无法告诉你如何精确计算这两列。然而,这看起来像是熊猫的工作。你会做一个这样一个简单的例子:

import pandas as pd
data = {'gene':['A', 'C', 'D'], 'cond_a':[2,3,4], 'cond_b':[5,6,7]}
df = pd.DataFrame(data)

df['new_col'] = df['cond_a'] / df['cond_b']

对于您的数据,您可以将其加载到:

df = pd.read_csv(myfile, delimiter='/t')

但是,您正在计算其他列,您可以使用Pandas轻松完成。此外,您可以按各种类别进行分组以处理子集,依此类推。

答案 1 :(得分:0)

谢谢,但这不是我想要计算的,让问题清楚,首先2/5将第一行(2)分为第二行(5)(基因A的标准)。 5/5是自身的划分,因为它是标准的1.最后一行(4/2)将最后一行划分为行号6     甲_____上游_____ 2 _____ 2/5
    一个_____ _____标准5 _____ 5/5
    ç_____ _____标准4 _____ 4/4
    d _____ downstrs ____ 3 _____ 3/9
    d _____标准_____ 9 _____ 9/9
    ħ_____标准_____ 2 _____ 2/2
    ħ_____ downupst ____ 1 _____ 1/2
    H _____注释_____ 4 _____ 4/2