python - python - 如何在python的csv文件中为每个基因保留x个最高人相关值的基因对?
问题描述
我有一个包含数千行以下形式的 csv 文件:
geneA geneB value
a b 5
a c 3
a d 7
b c 8
b d 1
我想为每个基因提取在最高值方面与其他基因最匹配的两个。对于前一个例子,基因 a 和 b 的结果将是:
a d 7
a b 5
b c 8
b a 5
根据答案,我部分得到了我想要的结果,因为它不测试第一列和第二列,而只测试第一列。a b 5
所以结果是不正确的,即它在检查 b 的最佳值时没有考虑该行。
有什么想法我能做什么?
解决方案
您可以交换geneA
,geneB
并连接到数据框,然后排序value
并使用groupby().head()
:
total_df = pd.concat([df, df.rename(columns={'geneA':'geneB','geneB':'geneA'})])
(total_df.sort_values(['geneA','value'], ascending=[True,False])
.groupby('geneA').head(2)
)
输出:
geneA geneB value
2 a d 7
0 a b 5
3 b c 8
0 b a 5
3 c b 8
1 c a 3
2 d a 7
4 d b 1
推荐阅读
- laravel - 显示数组中的第一个值
- c++ - 在迭代期间从 CAtlMap 中删除键/值对是否安全?
- java - 使用堆栈方法在之字形模式java中遍历二叉树不返回任何内容
- react-router - 如何使用reach-router定义带有可选参数的路由
- javascript - JSON.parse:出现 JSON 数据的第 1 行第 1 列的数据意外结束,它不会将测试数据从服务器发送到 fetch()
- scala - 为什么我可以将 DStream[String] 转换为 DStream[List[String]] 但不能转换为 DStream[DataFrame]?
- .htaccess - 在 .htacess 中使用 mod_rewrite 重写 url
- swift - 输入 CocoaPods 后“找不到构建输入文件”
- javascript - 带节点的条带引发错误 400:“无法读取未定义的属性‘会话’”
- c# - 两个List的比较
并用另一个填充缺失的日期和值