如何使用条件判断合并Pandas DataFrame两列生成新列?
Pandas两列按规则合并为新列的解决方案
方法1(推荐:灵活简洁、适配多列扩展)
利用stack()自动丢弃空值、再按行分组拼接的特性,无需额外编写条件判断,可直接适配更多列的合并场景:
import pandas as pd import numpy as np # 构造示例DataFrame df = pd.DataFrame({ 'A Code': [np.nan, np.nan, 'aa', 'bb'], 'B Code': ['bb', 'aa', 'bb', np.nan] }) # 合并生成新列 df['Code'] = df.stack().groupby(level=0).agg(','.join) # 查看输出结果 print(df[['Code']])
运行后输出与要求完全匹配:
Code 0 bb 1 aa 2 aa,bb 3 bb
原理说明:stack()操作会将列转为行索引,自动过滤空值,之后按原始行号(level=0)分组,用逗号拼接所有非空值,刚好匹配要求的合并规则。
方法2(仅适配两列场景、逻辑直观)
通过apply逐行做条件判断实现:
df['Code'] = df.apply( lambda x: f"{x['A Code']},{x['B Code']}" if pd.notna(x['A Code']) and pd.notna(x['B Code']) else x['A Code'] if pd.notna(x['A Code']) else x['B Code'], axis=1 )
注意事项
如果你的DataFrame存在其他无关列,只需要筛选出要合并的列即可,避免错误合并其他字段:
# 仅合并指定的两列 df['Code'] = df[['A Code', 'B Code']].stack().groupby(level=0).agg(','.join)
内容的提问来源于stack exchange,提问作者be84
相关产品推荐
相关产品推荐

