如何对pandas DataFrame的A、B两列去重拼接生成新列C
Pandas DataFrame 两列大小写不敏感去重合并实现
实现逻辑
- 逐行处理A、B两列,单词对比时忽略大小写
- 若B列的单词在A列已存在(不区分大小写),删除A列中对应的重复单词,保留B列的原有大小写格式
- 最终将B列内容 + A列去重后剩余内容拼接,作为C列结果
可运行代码
import pandas as pd def merge_ab(row): # 拆分A、B列为单词列表 a_words = row['A'].split() b_words = row['B'].split() # B列单词转小写存集合,用于快速判断重复 b_lower_set = set(word.lower() for word in b_words) # 过滤A列中不与B列重复的单词 a_remain = [word for word in a_words if word.lower() not in b_lower_set] # 拼接返回结果 return ' '.join(b_words + a_remain) # 测试数据 data = { 'A': ['tshirt for women', 'Zaino Estensibile', 'Air Optix plus'], 'B': ['TSHIRT', 'SJ Gang', 'AIR OPTIX'] } df = pd.DataFrame(data) # 应用函数生成C列 df['C'] = df.apply(merge_ab, axis=1) print(df)
输出结果
A B C 0 tshirt for women TSHIRT TSHIRT for women 1 Zaino Estensibile SJ Gang SJ Gang Zaino Estensibile 2 Air Optix plus AIR OPTIX AIR OPTIX plus
如果实际场景中单词分隔符除了空格还有横杠、逗号等特殊字符,可以在拆分单词前先对内容做预处理,用正则把特殊字符替换为空格后再拆分即可。
内容的提问来源于stack exchange,提问作者Isa
相关产品推荐
相关产品推荐

