在R中合并数据框行并拼接对应列值的实现方法
按V2分组拼接V3值的解决方案
需求说明
将现有数据框按V2列分组,每个V2值仅保留一行,对应的V3列拼接所有该分组下的V3值为单个字符串(逗号分隔),同时保留V1列对应值。
原始数据框
V1 V2 V3 7f7e ASN 440 E GLY 124 C 3279 7f7e ASP 442 E THR 123 C 3280 7f7e ARG 346 E TYR 119 C 3281 7f7e LEU 441 E GLY 117 C 3282 7f7e ASN 440 E ILE 115 C 3283 7f7e ASN 440 E ALA 125 C 3284 7f7e SER 443 E GLY 124 C 3285 7f7e ASP 442 E TYR 119 C
解决方案(Pandas实现)
基础拼接方案
直接按V1和V2分组,对V3列执行字符串拼接:
import pandas as pd # 假设数据已加载为df df_grouped = df.groupby(['V1', 'V2'])['V3'].agg(', '.join).reset_index()
执行后结果示例:
V1 V2 V3 0 7f7e ASN 440 E GLY 124 C, ILE 115 C, ALA 125 C 1 7f7e ASP 442 E THR 123 C, TYR 119 C 2 7f7e ARG 346 E TYR 119 C 3 7f7e LEU 441 E GLY 117 C 4 7f7e SER 443 E GLY 124 C
去重拼接方案(若存在重复V3值)
如果同一分组下有重复的V3值,可先去重再拼接:
df_grouped = df.groupby(['V1', 'V2'])['V3'].agg(lambda x: ', '.join(sorted(set(x)))).reset_index()
说明
- 用
groupby(['V1', 'V2'])是为了确保V1与V2的组合唯一,避免同一V2对应不同V1时出错;若你的数据中V2唯一对应V1,也可仅按V2分组。 reset_index()用于将分组后的索引转换为普通列,保证结果是标准数据框格式。
内容的提问来源于stack exchange,提问作者PersianK
相关产品推荐
相关产品推荐

