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

如何使用pandas groupby仅聚合非空值,实现多行合并为单行?

Pandas 按ID分组拼接Cities非空值解决方案

你可以直接修改agg方法内的匿名函数,在拼接前先过滤所有空值即可,修改后的代码如下:

import pandas as pd

# 兼容NaN、None、空字符串、全空格的通用写法
result = dataFrame.groupby(['ID'], as_index=False)
                  .agg({'Cities': lambda x: ','.join([val for val in x if pd.notna(val) and str(val).strip() != ''])})

如果你的场景确定只有空字符串这一种空值类型,可以简化为:

result = dataFrame.groupby(['ID'], as_index=False)
                  .agg({'Cities': lambda x: ','.join([val for val in x if val.strip() != ''])})

逻辑说明

  • 遍历当前分组下所有Cities值,先过滤掉NaN、None、空字符串、全空格的无效值
  • 直接用','.join()拼接过滤后的有效列表,天然不会出现连续逗号、首尾逗号的问题

如果需要将全空ID对应的Cities空字符串改为NaN,可在聚合后补充处理:

import numpy as np
result['Cities'] = result['Cities'].replace('', np.nan)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:24:02