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

如何在pandas DataFrame中实现字符串列的条件拼接

实现pandas DataFrame两列条件拼接的两种方案

方案1:使用Series.str.cat()(推荐)

这是pandas官方提供的字符串拼接专用方法,代码更简洁,适配性更强:

import pandas as pd

sample_dict = {
               'A' : ["entry", "", "", "entry"],
               'B' : ["foo", "foo", "", ""]
              }
sample_frame = pd.DataFrame(sample_dict)

# 将空字符串替换为NaN,适配str.cat的空值处理逻辑
sample_frame = sample_frame.replace("", pd.NA)
# 拼接时指定分隔符,空值填充为空字符串
sample_frame['A'] = sample_frame['A'].str.cat(sample_frame['B'], sep=", ", na_rep="")
del sample_frame['B']
# 可选:将结果中的空值还原为空字符串
sample_frame = sample_frame.fillna("")

输出结果完全符合需求:

A
0  entry, foo
1         foo
2          
3       entry

方案2:使用np.where()条件判断

逻辑更直白,可灵活自定义拼接规则:

import pandas as pd
import numpy as np

sample_dict = {
               'A' : ["entry", "", "", "entry"],
               'B' : ["foo", "foo", "", ""]
              }
sample_frame = pd.DataFrame(sample_dict)

# 仅当两列都不为空时添加分隔符
cond = (sample_frame['A'] != "") & (sample_frame['B'] != "")
sample_frame['A'] = np.where(cond,
                            sample_frame['A'] + ", " + sample_frame['B'],
                            sample_frame['A'] + sample_frame['B'])
del sample_frame['B']

内容的提问来源于stack exchange,提问作者Pm740

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 21:18:03