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

Pandas按月份和客户ID合并同月两行含空值数据为单行

你遇到的报错是因为分组查询时,非分组维度的字段必须指定聚合规则,所以系统才会提示你要把closed_deals、checkout这类字段也加入分组条件,这显然不符合你的合并需求。

从你的数据结构可以看出:

  • 每个month+cust_id分组内,closed_deals、checkout字段仅存在一个非空有效值,其余行均为null
  • 同组内cum_closed_deals、cum_checkout的数值完全一致

所以只需要对分组后的字段做对应聚合即可,以下是Python Pandas的实现代码:

import pandas as pd
import numpy as np

# 第一步:先将数据中的null字符串转为Pandas可识别的空值
df = df.replace('null', np.nan)

# 分组聚合
result_df = df.groupby(['month', 'cust_id'], as_index=False).agg(
    # 取最大值自动跳过空值,拿到唯一的有效值
    closed_deals = ('closed_deals', 'max'),
    cum_closed_deals = ('cum_closed_deals', 'max'),
    checkout = ('checkout', 'max'),
    cum_checkout = ('cum_checkout', 'max')
)

如果你是用SQL操作(比如Spark SQL、pandasql等场景),可以用以下查询语句实现:

SELECT 
    month,
    cust_id,
    MAX(closed_deals) AS closed_deals,
    MAX(cum_closed_deals) AS cum_closed_deals,
    MAX(checkout) AS checkout,
    MAX(cum_checkout) AS cum_checkout
FROM 你的表名
GROUP BY month, cust_id

以上两种写法都可以直接得到你预期的输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:36:04