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

如何合并DataFrame不同列的唯一值并添加指定分隔符?

我的数据集,需合并Symptom_1、Symptom_2、Symptom_3三列

问题说明

需要合并数据集中Symptom_1、Symptom_2、Symptom_3三列的内容,同时提取所有症状的唯一值。初始使用+直接拼接三列的写法没有添加分隔符,导致不同症状值粘连,无法区分。

正确实现方法

1. 带逗号分隔符合并列,生成新的Symptom字段

不要直接用+硬拼字符串,用join方法可以统一处理分隔符,同时自动过滤空值,避免出现多余逗号或者空值报错:

# 选中需要合并的三列,逐行拼接非空值,用逗号做分隔符
df['Symptom'] = df[['Symptom_1', 'Symptom_2', 'Symptom_3']].apply(
    lambda row: ','.join(row.dropna().astype(str)), 
    axis=1
)
df.head()

如果确定三列没有空值,也可以直接用pandas内置的字符串拼接方法,运行效率比apply更高:

df['Symptom'] = df['Symptom_1'].str.cat([df['Symptom_2'], df['Symptom_3']], sep=',')

2. 提取所有症状的唯一值

如果最终目的是拿到全表所有不重复的症状,不需要先拼接成列,可以直接把三列数据拉平后去重,运行速度更快:

# 将三列数据转为一维序列,去重后得到所有唯一症状
unique_symptom_list = df[['Symptom_1', 'Symptom_2', 'Symptom_3']].stack().dropna().unique().tolist()

原代码问题说明

直接用row.Symptom_1 + row.Symptom_2 + row.Symptom_3做拼接时,本质是对三个字符串做首尾相连操作,不会自动插入任何分隔符。如果硬要用+实现带分隔符的拼接,需要手动在列之间加逗号:row.Symptom_1 + ',' + row.Symptom_2 + ',' + row.Symptom_3,但这种写法遇到列值为空时会报错,也会出现开头/结尾/中间多余逗号的问题,不推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 14:57:16