在Python中,如何将列中的值除以特定行?

2024-06-16 08:42:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个tab文件,我想把一个基因的特征(upstream,downstrs,downupst,annotate或……)划分为标准特征。 最后两列是我要生成的cond\u a和cond\u 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

Tags: 文件line特征tabstandardfeatureint元组
2条回答

谢谢,但这不是我想计算的,让我们把问题弄清楚,前2/5是第一行(2)除以第二行(5)(基因A的标准)。5/5本身就是除法,因为它是1的标准。最后一行(4/2)将最后一行除以第6行
上游2/5
标准5/5
C标准4/4
下降3/9
D标准9/9
H标准2/2
下一步1/2 注释4/2

很难准确地说出你想要什么(为了将来的参考,最好省略与领域相关而与编程无关的技术细节——这让我们这些对基因一无所知的人更容易得到帮助),我也说不出你是如何准确地计算这两列的。不过,这看起来像是熊猫的工作。你可以做这样一个简单的例子:

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进行计算。此外,您还可以按各种类别分组以处理子集,依此类推。你知道吗

相关问题 更多 >