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

求助:基于sheet_internal_id列值对Pandas数据分组未达预期

问题

我手里的CSV数据是这种结构:同一个sheet_internal_id对应多条记录,nct_id值完全相同,stat_design有多个不同条目。我需要按sheet_internal_id分组,把同一组的stat_design用逗号拼起来,最终每个sheet_internal_id只保留一行,包含对应的nct_id和拼接后的stat_design。

我试了这段代码,没得到想要的结果:

df_1 = df.fillna('').groupby(['sheet_internal_id','nct_id'])['stat_design'].apply(','.join).reset_index()
解决办法

你这段代码的问题是分组时同时指定了sheet_internal_id和nct_id两个字段,其实只要按sheet_internal_id单字段分组,同时对nct_id取唯一值、对stat_design做拼接就行,给你两种可行写法:

写法一:一次性聚合多字段

直接用agg()方法,对不同字段指定不同的聚合逻辑,简单直接:

df_1 = df.fillna('').groupby('sheet_internal_id').agg(
    nct_id=('nct_id', 'first'),  # 同一组nct_id相同,取第一个值就行
    stat_design=('stat_design', ','.join)
).reset_index()

写法二:先统一nct_id再分组

如果担心同一sheet_internal_id下nct_id有不一致的情况(比如空格、大小写差异),可以先把每组的nct_id统一成同一个值,再分组拼接:

# 把同一sheet_internal_id下的nct_id统一为第一个值
df['nct_id'] = df.groupby('sheet_internal_id')['nct_id'].transform('first')
# 再分组拼接stat_design
df_1 = df.fillna('').groupby(['sheet_internal_id','nct_id'])['stat_design'].apply(','.join).reset_index()

补充说明

如果同一sheet_internal_id下的nct_id本来就完全一致,原代码理论上应该能得到正确结果,但如果nct_id存在隐形差异(比如前后空格),就会被分成不同组,导致结果不符合预期。用单字段分组+聚合的方式能避免这种问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 00:27:49