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

基于相同列值合并行:解决Pandas中NaN引发的字符串拼接报错

问题:合并重复行并拼接diagnosis列内容

原始数据集:

id    name  phone  diagnosis
0   1  archie  12345    healthy
1   2   betty  23456       dead
2   3   clara  34567        NaN
3   3   clara  34567     kidney
4   4   diana  45678     cancer

期望得到的目标数据集:

id    name  phone    diagnosis
0   1  archie  12345      healthy
1   2   betty  23456         dead
2   3   clara  34567  NaN, kidney
3   4   diana  45678       cancer

尝试执行以下代码时出现预期字符串但找到浮点型的错误:

data = data.groupby(['id','name','phone'])['diagnosis'].apply(', '.join).reset_index()

需要实现重复行合并,将同一组的diagnosis条目拼接成字符串。

解决方案

错误原因是diagnosis列中的NaN是浮点类型,而', '.join()只能处理字符串元素。解决思路是先将NaN转换为字符串形式的'NaN',再执行分组拼接:

方法一:先处理列再分组

import pandas as pd

# 将diagnosis列的NaN值转为字符串'NaN'
data['diagnosis'] = data['diagnosis'].fillna('NaN')
# 按id、name、phone分组,拼接diagnosis内容
data = data.groupby(['id','name','phone'])['diagnosis'].apply(', '.join).reset_index()

方法二:在分组时直接处理

如果不想修改原数据集的diagnosis列,可以在apply中直接处理NaN:

import pandas as pd

data = data.groupby(['id','name','phone'])['diagnosis'].apply(lambda x: ', '.join(x.fillna('NaN'))).reset_index()

两种方法都能得到目标结果,将同一组的diagnosis内容用逗号分隔拼接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:36:24