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

首次使用Pandas,求助对比两个DataFrame的方法

刚用Pandas?咱们一步步来解决你的问题~

首先先给你的代码做个小优化,大家用Pandas时一般都会把它简写为pd,后续写代码会更简洁顺手:

import pandas as pd
blast = pd.read_table("blast")
cluster = pd.read_table("cluster")

从你给出的cluster表示例来看,它有两列核心数据:cluster_name是聚类的编号,seq_names是归到该聚类下的序列名称,看起来同一个聚类可能对应多个序列,或者同一个序列会出现在不同聚类中?

不过你没明确说具体要解决的问题,我先把这类场景下最常用的操作列出来,你可以对照自己的需求参考:

1. 把blast表和cluster表关联合并

如果你的blast表中也有seq_names列,想把每个序列对应的聚类信息整合到blast表里,用merge方法就能实现:

# 内连接:只保留两个表中都存在的seq_names数据
merged_data = pd.merge(blast, cluster, on="seq_names")

# 左连接:保留blast表的所有数据,哪怕cluster里没有对应序列的匹配项
merged_data = pd.merge(blast, cluster, on="seq_names", how="left")

2. 统计每个聚类的独特序列数量

要是想知道每个聚类下包含多少个不同的序列,用groupby做聚合统计就好:

cluster_seq_count = cluster.groupby("cluster_name")["seq_names"].nunique().reset_index()
# 给统计列改个更直观的名字
cluster_seq_count.rename(columns={"seq_names": "unique_sequence_count"}, inplace=True)

3. 快速查找特定序列所属的聚类

比如你想查g1.t1_0035这个序列属于哪些聚类,用布尔索引就能快速定位:

target_seq = "g1.t1_0035"
related_clusters = cluster[cluster["seq_names"] == target_seq]["cluster_name"].tolist()
print(f"序列{target_seq}所属的聚类编号:{related_clusters}")

如果这些操作都不是你需要的,你可以补充说明具体的需求(比如筛选特定聚类的数据、分析blast结果和聚类的关联关系等),我再给你针对性的解决方案~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:04:08