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

在DataFrame中创建嵌套列表聚合列的技术求助

解决DataFrame嵌套列表聚合问题

嘿,我懂你现在卡在DataFrame的嵌套列表聚合上了!要精准搞定这个问题,得麻烦你补充几个关键信息哦:

  • 你的原始DataFrame结构(可以用df.head().to_dict()输出,或者直接列字段+示例数据)
  • 你尝试过的代码片段(方便我排查哪里出了问题)
  • 你提到的预期嵌套聚合效果(最好举个具体的输出示例,比如聚合后的列表/字典结构是什么样的)

不过先给你几个常见场景的解决方案参考,说不定刚好匹配你的需求:

场景1:按单字段分组,将目标列聚合成嵌套列表

比如你有这样的原始DataFrame:

import pandas as pd
df = pd.DataFrame({
    'category': ['fruit','fruit','veg','veg'],
    'item': ['apple','banana','carrot','spinach']
})

预期得到category对应嵌套列表:{'fruit': ['apple','banana'], 'veg': ['carrot','spinach']}或者带聚合列的新DataFrame。

用groupby+agg就能轻松实现:

# 生成带聚合列的新DataFrame
result_df = df.groupby('category')['item'].agg(list).reset_index()

# 或者直接生成字典格式
result_dict = df.groupby('category')['item'].agg(list).to_dict()

场景2:多层嵌套聚合(多字段分组生成嵌套结构)

如果是更复杂的多层嵌套需求,比如按group1和group2分组,把value聚合成嵌套字典:

df = pd.DataFrame({
    'group1': ['A','A','B','B'],
    'group2': [1,2,1,2],
    'value': ['x','y','z','w']
})

预期得到{'A': {1: ['x'], 2: ['y']}, 'B': {1: ['z'], 2: ['w']}}。

可以用嵌套groupby结合apply实现:

result = df.groupby('group1').apply(
    lambda x: x.groupby('group2')['value'].agg(list).to_dict()
).to_dict()

场景3:多字段整合成嵌套字典后再聚合

如果需要把每行的多个字段打包成字典,再按组聚合成列表:

df = pd.DataFrame({
    'team': ['Red','Red'],
    'name': ['Alice','Bob'],
    'score': [85,90]
})

预期得到team=Red对应[{'name':'Alice','score':85}, {'name':'Bob','score':90}]。

这样写就能实现:

result_df = df.groupby('team').apply(
    lambda x: x[['name','score']].to_dict('records')
).reset_index(name='team_members')

你可以对照这些场景看看自己的需求属于哪一类,或者把具体信息补充上来,我再帮你调整解决方案!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:29:09