首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python:从B列中获取一个值最高的基因,从A列中与每个基因相关的一组基因中获得

Python:从B列中获取一个值最高的基因,从A列中与每个基因相关的一组基因中获得
EN

Stack Overflow用户
提问于 2018-09-21 06:40:54
回答 1查看 78关注 0票数 0

我有一个编程问题,目前我无法想出解决办法。我有一张桌子摆在下面:

代码语言:javascript
运行
复制
GeneA   GeneB   Value  Distance
1       101     0.9  
1       102     1
1       103     0.8
2       201     1
2       202     1
3       301     0.9
3       302     0.8
3       303     0.8
4       401     1

在这里,我想为GeneA列中的每个基因从GeneB列中提取一个替换基因。该值表示“相似”基因B与基因A的关系,因此我希望得到一个尽可能高值的GeneB,即尽可能接近1。

在某些情况下,就像基因2一样,也有相同值的基因。在这里,我还想得到彼此之间距离最短的基因。

我应该如何用Python来完成这个任务呢?谢谢!

编辑:我打算输出的表如下所示:

代码语言:javascript
运行
复制
GeneA   GeneB   Value   Distance
1       102     1
2       201     1
3       301     0.9
4       401     1

在选择201或202之间的GeneB,是选择与GeneA的最短距离,这是由他们的遗传位置的差异输出。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-21 06:57:48

我的回答受到this SO question的启发。

就你而言:

代码语言:javascript
运行
复制
import pandas as pd

df = pd.DataFrame({
'GeneA': [ '1', '1', '1', '2', '2', '3', '3', '3', '4' ],
'GeneB': [ '101', '102', '103', '201', '202', '301', '302', '303', '401'],
'Value': [ 0.9, 1, 0.8, 1, 1, 0.9, 0.8, 0.8, 1 ],
})

# Sort by decreasing `Value` and then by decreasing `Distance`
df = df.sort_values(['Value', 'Distance'], ascending=False)

# Group by `GeneA` and select only the first row
df = df.groupby(['GeneA'], sort=False).first()

df

[Out]:
    GeneB   Value
GeneA       
1   102 1.0
2   201 1.0
4   401 1.0
3   301 0.9
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52438006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档