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

Pandas执行groupby后合并不同大小DataFrame且不增加行数的实现方法

问题原因

你直接关联聚合结果和原表时行数膨胀,是因为原表中同一个COD对应多条数据,关联后每条聚合记录会匹配到多条原表记录,导致行数变回原表量级。
根据你的数据特征(同一个COD对应的STATE、CITY固定,同一个[COD,TEC,SET]分组下STATE、CITY也完全一致),有两种简单的实现方案:


方案1:直接修改groupby逻辑(更高效)

将STATE、CITY加入分组键即可,因为同组内这两个字段值完全一致,不会改变分组数量和聚合结果,直接得到带字段的9行结果:

df_cut = (
    df.groupby(["COD","TEC","SET", "STATE", "CITY"])
    .AZIM
    .agg(lambda x: pd.Series.mode(x).max())
    .reset_index()
)

方案2:聚合后关联去重映射表

如果你不想修改原有聚合逻辑,可以先从原表提取COD和STATE、CITY的唯一对应关系,再和聚合结果关联,不会出现行数膨胀:

# 提取COD与STATE、CITY的唯一映射
cod_dim = df[["COD", "STATE", "CITY"]].drop_duplicates()
# 关联得到最终结果,保持9行不变
df_result = df_cut.merge(cod_dim, on="COD", how="left")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 22:15:06