Python Pandas合并两列并去除重复值问题求助
解决方案
可以通过几种简洁的方式实现这个需求,以下是最常用的几种方法:
方法1:使用numpy.where(推荐,效率最优)
利用numpy.where根据条件快速选择对应值,逻辑清晰且处理大数据集时性能更优:
import pandas as pd import numpy as np # 构造示例DataFrame df = pd.DataFrame({ 'Column A': ['a', 'c', 'd', 'g'], 'Column B': ['b', 'c', 'e', 'g'] }) # 生成Column C df['Column C'] = np.where(df['Column A'] == df['Column B'], df['Column A'], df['Column A'] + df['Column B'])
执行后得到目标结果:
| Column A | Column B | Column C |
|---|---|---|
| a | b | ab |
| c | c | c |
| d | e | de |
| g | g | g |
方法2:使用apply逐行处理
如果后续需要扩展更复杂的规则,可使用apply实现自定义逻辑:
df['Column C'] = df.apply(lambda row: row['Column A'] if row['Column A'] == row['Column B'] else row['Column A'] + row['Column B'], axis=1)
注意:apply是逐行处理,效率低于numpy.where,更适合小数据集或复杂逻辑场景。
方法3:布尔索引分步赋值
通过分步操作实现,逻辑直观易懂:
# 先默认拼接所有行的A、B值 df['Column C'] = df['Column A'] + df['Column B'] # 对A、B值相等的行,替换为单个值 df.loc[df['Column A'] == df['Column B'], 'Column C'] = df['Column A']
内容的提问来源于stack exchange,提问作者Armsinrius
相关产品推荐
相关产品推荐

