You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用条件判断合并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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 20:06:01