You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

筛选BLAST序列DataFrame获取各簇最大pident_x及DataFrame解析请求

解决BLAST DataFrame按Cluster筛选最大pident_x的问题

嘿,我来帮你搞定这个BLAST结果的筛选需求!针对你给出的DataFrame,要按cluster_name分组并提取每组最大的pident_x值(以及对应行数据),用Pandas可以轻松实现。

先把你提供的DataFrame结构整理清楚(补全了部分截断内容):

cluster_name qseqid             sseqid             pident_x qstart qend sstart send
2            seq1_0035_0035    seq13_0042_0035    0.73     42    133   46     189
3            seq1_0035_0035    seq13_0042_0035    0.73     146   283   287    389
4            seq1_0035_0035    seq13_0042_0035    0.73     301   478   402    503
5            seq13_0042_0035   seq1_0035_0035     0.73     46    189   42     133
6            seq13_0042_0035   seq1_0035_0035     0.73     287   389   146    283
7            seq13_0042_0035   seq1_0035_0035     0.73     402   503   301    478
8            seq4_0042_0035    seq2_0035_0035     0.71     256   789   125    ...

方法1:仅获取每个Cluster的最大pident_x数值

如果只需要每个cluster_name对应的最大pident_x值,直接用groupby结合max()即可:

import pandas as pd

# 假设你的DataFrame名为blast_df
max_pident_values = blast_df.groupby('cluster_name')['pident_x'].max().reset_index()
print(max_pident_values)

执行后会得到一个简洁的结果表,每行对应一个cluster和它的最高相似度值。

方法2:获取对应最大pident_x的完整行数据

如果需要保留最大pident_x对应的所有列信息(比如序列ID、比对位置等),可以用idxmax()定位最大值所在的行索引,再提取整行:

# 找到每个cluster中pident_x最大的行的索引
max_row_indices = blast_df.groupby('cluster_name')['pident_x'].idxmax()
# 根据索引提取对应行
max_pident_rows = blast_df.loc[max_row_indices].reset_index(drop=True)
print(max_pident_rows)

注:如果同一个cluster里有多行的pident_x都是最大值(比如你示例里cluster 1的所有行都是0.73),这个方法会取每组中第一个出现的最大值行。

方法3:保留Cluster内所有最大值的行

如果想保留同一个cluster里所有pident_x等于组内最大值的行,可以用transform来标记筛选:

# 给每行添加所在cluster的最大pident_x值列
blast_df['cluster_max_pident'] = blast_df.groupby('cluster_name')['pident_x'].transform('max')
# 筛选出pident_x等于组内最大值的行
all_max_pident_rows = blast_df[blast_df['pident_x'] == blast_df['cluster_max_pident']].drop(columns='cluster_max_pident').reset_index(drop=True)
print(all_max_pident_rows)

这个方法会保留示例中cluster 1的所有行,因为它们的pident_x都等于组内最大值0.73。

内容的提问来源于stack exchange,提问作者Grendel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:41:42