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

如何基于另一列值对Pandas指定列分组并显示无分组行

解决DataFrame分组合并并保留空分组的问题

原始数据

platesfood
1eggs
1bacon
2waffles
2toast
3
3
4cereal
4milk

期望输出

food
eggs bacon
waffles toast
None
cereal milk

现有代码问题

你当前的代码存在语法错误(缺少闭合括号),正确写法应为:

result = df['food'].groupby(df['plates']).agg('sum')

但该写法会将空字符串分组的结果返回为空字符串,而非期望的None,无法满足全空分组的展示需求。

正确实现代码

import pandas as pd

# 构造原始DataFrame
df = pd.DataFrame({
    'plates': [1, 1, 2, 2, 3, 3, 4, 4],
    'food': ['eggs', 'bacon', 'waffles', 'toast', '', '', 'cereal', 'milk']
})

# 分组合并并处理空分组
result = df.groupby('plates')['food'].agg(
    lambda x: ' '.join(item for item in x if item.strip()) or None
).reset_index(drop=True).to_frame('food')

print(result)

代码说明

  • groupby('plates'):按盘子号分组,自动保留所有存在的分组(包括全空的分组3)
  • 自定义聚合函数:过滤掉分组内的空字符串,用空格拼接有效内容;若分组无有效内容,则返回None
  • reset_index(drop=True):移除原分组索引,转为连续索引
  • to_frame('food'):将聚合后的Series转换为指定列名的DataFrame

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 12:25:19