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

如何用Pandas按Cluster分组,将代表序列前置并合并同组其他序列?

解决方法

第一步:修正Cluster列类型(可选但推荐)

读取TSV后,先确认Cluster列的类型,若为字符串可转为整数,避免分组时的潜在问题:

df['Cluster'] = df['Cluster'].astype(int)

第二步:分组处理生成目标格式

以下提供两种实现方式,任选其一即可:

方式一:使用groupby+自定义函数

def process_cluster(group):
    # 获取当前组的代表序列
    rep_seq = group[group['Representative'] == 'TRUE']['Sequence'].iloc[0]
    # 合并当前组的非代表序列(空格分隔)
    non_rep_seqs = ' '.join(group[group['Representative'] == 'FALSE']['Sequence'])
    return pd.Series({'Representative': rep_seq, 'Sequence': non_rep_seqs})

# 分组处理并重置索引
result_df = df.groupby('Cluster').apply(process_cluster).reset_index()

方式二:拆分合并法(更直观)

先分别提取代表序列和非代表序列,再合并结果:

# 提取代表序列,重命名列
rep_df = df[df['Representative'] == 'TRUE'][['Cluster', 'Sequence']].rename(columns={'Sequence': 'Representative'})
# 分组合并非代表序列
non_rep_df = df[df['Representative'] == 'FALSE'].groupby('Cluster')['Sequence'].agg(' '.join).reset_index()
# 合并两个结果表
result_df = pd.merge(rep_df, non_rep_df, on='Cluster', how='left')

结果说明

处理后的result_df会以Cluster为分组,每行对应一个Cluster:

  • Representative列存储该组的代表序列
  • Sequence列存储该组所有非代表序列,以空格分隔

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:35:25