Python中合并重复DataFrame行:仅合并PubMed不同的重复行
合并DataFrame中重复行(仅PubMed列不同)
没问题,这就帮你实现需求!你需要合并DataFrame中仅PubMed ID不同、其余列完全一致的行,把多个PubMed ID用逗号拼接在同一行里。下面是具体的实现步骤和代码:
步骤1:导入依赖并创建原始DataFrame
首先我们导入pandas,然后定义你提供的原始数据并生成DataFrame:
import pandas as pd # 原始输入数据 data_dict = { 'FromTo_U': {0: 'L->R', 1: 'L->R', 2: 'S->I'}, 'GeneName': {0: 'EGFR', 1: 'EGFR', 2: 'EGFR'}, 'MutationAA_C': {0: 'p.L858R', 1: 'p.L858R', 2: 'p.S768I'}, 'MutationDescription': {0: 'Substitution - Missense', 1: 'Substitution - Missense', 2: 'Substitution - Missense'}, 'PubMed': {0: '22523351', 1: '23915069', 2: '26862733'}, 'VariantID': {0: 'COSM12979', 1: 'COSM12979', 2: 'COSM18486'}, 'VariantPos_U': {0: '858', 1: '858', 2: '768'}, 'VariantSource': {0: 'COSMIC', 1: 'COSMIC', 2: 'COSMIC'} } df1 = pd.DataFrame(data_dict)
步骤2:执行合并操作
核心逻辑是按除PubMed外的所有列分组,然后将同一组内的PubMed ID用逗号拼接:
# 分组聚合:除PubMed外的列作为分组键,拼接PubMed列 df_merged = df1.groupby( [col for col in df1.columns if col != 'PubMed'], as_index=False )['PubMed'].agg(','.join)
代码解释:
[col for col in df1.columns if col != 'PubMed']:动态获取除PubMed外的所有列作为分组依据,确保只有当这些列的内容完全相同时才会被合并。agg(','.join):对每个分组中的PubMed列执行拼接操作,用逗号分隔不同的ID。as_index=False:避免将分组列转为索引,保持和原始DataFrame一致的列结构。
步骤3:查看合并结果
打印df_merged就能得到你期望的输出:
FromTo_U GeneName MutationAA_C MutationDescription PubMed VariantID VariantPos_U VariantSource 0 L->R EGFR p.L858R Substitution - Missense 22523351,23915069 COSM12979 858 COSMIC 1 S->I EGFR p.S768I Substitution - Missense 26862733 COSM18486 768 COSMIC
这个结果完全符合你的要求:仅合并了前两行(除PubMed外所有列相同),并将两个PubMed ID拼接在一起,第三行保持不变。
内容的提问来源于stack exchange,提问作者user2277675
相关产品推荐
相关产品推荐

