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

如何在Pandas DataFrame中按三列匹配对Col1列值求和?

问题描述

我有一个包含Col1、Col2、Col3、Col4四列的Pandas DataFrame,原始数据如下:

Col1Col2Col3Col4
1001
5000
6101
1001

希望将Col2、Col3、Col4取值完全相同的行的Col1值求和,得到如下目标DataFrame:

Col1Col2Col3Col4
2001
5000
6101

尝试执行以下代码后,print(df)并未得到正确求和结果:

df = df.groupby(["col2","col3","col4"]).col1.sum()

请问是否需要先强制转换列的类型?


解决方案

核心问题:列名大小写不匹配

Pandas对列名大小写敏感,你的代码里用了小写的col2/col3/col4/col1,但原始DataFrame的列名是大写开头的Col1/Col2/Col3/Col4,这会导致分组时无法匹配到正确列,自然无法完成求和。

正确代码

使用与原始数据一致的列名,同时加上as_index=False参数让分组列保持为普通列(避免变成索引),就能得到目标结构:

df = df.groupby(["Col2", "Col3", "Col4"], as_index=False)["Col1"].sum()

关于列类型转换

从你的数据来看,所有列值都是整数,只要读取数据时Col1被识别为数值类型(int/float),就不需要强制转换。可以先通过以下代码检查列类型:

print(df.dtypes)

如果Col1的类型是object(字符串),再执行转换:

df["Col1"] = df["Col1"].astype(int)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:20:20