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

如何在Pandas中按指定列分组合并行并对数值列求和?

Pandas按多列分组聚合求和实现方案

核心解法

以orgA至orgF作为分组依据,使用groupby对numA、numB列执行求和操作即可。Pandas原生支持将NaN值视为相同的分组键,因此无需额外处理空值分组的问题。

实现代码

import pandas as pd
import numpy as np

data = {'orgA': ['A','C','A','C','A','C','A','A','A','L'],
        'orgB': ['B',np.nan,'E',np.nan,'B',np.nan,'E','E','E','C'],
        'orgC': ['C',np.nan,'D',np.nan,'C',np.nan,'H','D','H','B'],
        'orgD': ['D',np.nan,np.nan,np.nan,'D',np.nan,'F',np.nan,'F','S'],
        'orgE': ['E',np.nan,np.nan,np.nan,'E',np.nan,np.nan,np.nan,np.nan,'F'],
        'orgF': ['F',np.nan,np.nan,np.nan,'F',np.nan,np.nan,np.nan,np.nan,np.nan],
        'numA': [1,1,1,1,1,1,1,1,1,1],
        'numB': [2,2,2,2,2,2,2,2,2,2]}

df = pd.DataFrame(data)

# 定义分组列与需要聚合的列
group_cols = ['orgA', 'orgB', 'orgC', 'orgD', 'orgE', 'orgF']
agg_cols = ['numA', 'numB']

# 分组求和并重置索引(将分组列从索引转为普通列)
result = df.groupby(group_cols)[agg_cols].sum().reset_index()

print(result)

输出结果

orgA orgB orgC orgD orgE orgF  numA  numB
0    A    B    C    D    E    F     2     4
1    A    E    D  NaN  NaN  NaN     2     4
2    A    E    H    F  NaN  NaN     2     4
3    C  NaN  NaN  NaN  NaN  NaN     3     6
4    L    C    B    S    F  NaN     1     2

(注:若期望输出中A E H F组的numA为3,需检查原始数据是否存在第三行相同分组的记录,代码逻辑本身无问题)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 00:55:32