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

如何对排序后的DataFrame按sku分组,拼接bill并求和qty_left?

问题:按SKU分组聚合DataFrame,实现Bill去重拼接和Qty求和

我有一个已排序的DataFrame dfsorted,代码如下:

dfsorted = df.sort_values(["sku"], ascending=[True])
print(dfsorted.head())

其前几行数据如下:

idskubillqty_left
18601-04504690
1601-205026215
26701-20504601
1801-20502625
1701-20502625

希望将其聚合为如下结果:

skubillqty_left
01-04504690
01-2050262, 5046026

具体需求:

  • 按sku对DataFrame进行分组
  • 每个sku对应的bill值去重后拼接
  • 每个sku对应的qty_left值求和

解决方案

直接使用groupby结合agg方法,为不同列指定对应的聚合逻辑即可:

# 定义各列的聚合规则
agg_rules = {
    'bill': lambda x: ', '.join(x.unique()),  # 去重后拼接成字符串
    'qty_left': 'sum'  # 直接求和
}

# 执行分组聚合
agg_result = dfsorted.groupby('sku', as_index=False).agg(agg_rules)

# 输出结果
print(agg_result)

说明

  • groupby('sku', as_index=False):按sku列分组,as_index=False确保sku作为结果中的普通列,而非索引
  • bill列的处理:x.unique()先提取该分组下的唯一bill值,再用, 拼接成字符串;如果需要固定拼接顺序,可以加上sorted(),即lambda x: ', '.join(sorted(x.unique()))
  • qty_left列直接使用sum方法求和,符合需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 18:31:07