如何简洁聚合DataFrame列并避免信息重复?
高效实现DataFrame多列聚合去重生成新列
针对你需求的两种简洁高效方案:
方案1:向量化判断(最优,适合大规模数据)
如果仅针对两列(Description和Information),用numpy的向量化判断直接生成结果,完全避免逐行循环,性能最优:
import numpy as np mask = df['Description'] == df['Information'] df['Combined'] = np.where(mask, df['Description'], df['Description'] + ' ' + df['Information'])
原理:先判断每行两列内容是否相同,相同则直接取其中一列的值,不同则拼接两列内容,整个过程是向量化运算,处理大规模数据时速度远快于逐行处理。
方案2:通用多列去重合并(支持任意列数)
如果后续需要扩展到更多列,可使用apply配合dict.fromkeys(保持原始顺序去重):
df['Combined'] = df[['Description', 'Information']].apply(lambda row: ' '.join(dict.fromkeys(row)), axis=1)
原理:对每行的指定列,用dict.fromkeys保留首次出现的元素(实现有序去重),再用空格拼接成字符串。
对比原方案的优势
原方案先拼接所有列再处理重复,会产生大量冗余的字符串操作;上述方案1直接在拼接前判断重复,仅在必要时执行拼接,大幅减少计算量,更适合大规模数据集。
内容的提问来源于stack exchange,提问作者Jon
相关产品推荐
相关产品推荐

