如何用Python对DataFrame多列求和得到类似groupby格式的输出?
列求和转目标布局的实现方法
报错根源
使用groupby实现需求时遇到的ValueError,本质是方法适配错了场景:groupby是按行维度拆分分组后做聚合的逻辑,而当前需求是跨所有行、对每一列做整体汇总,完全不需要分组操作。触发「grouper和axis的长度必须相同」报错,通常是误把列名列表当成行分组的grouper参数传入,传入的分组键长度和DataFrame的实际行数不匹配导致的。
具体实现
不需要手动添加总计行,直接调用pandas内置方法即可完成目标转换:
- 复现原始DataFrame(首行Kin列的空值无需额外处理,pandas求和方法默认会自动跳过空值,计算结果和预期完全匹配):
import pandas as pd df = pd.DataFrame({ 'Diet': [1, 1, 1, 1], 'Kin': [None, 1, 2, 2], 'LLFC': [1, 1, 1, 1], 'MH': [3, 1, 3, 6], 'Nursing': [1, 1, 1, 1] }) - 计算所有列的总和,转换为单列结构的DataFrame:
column_total = df.sum().to_frame(name='Total')
最终输出效果
生成的DataFrame结构和groupby输出的布局完全一致,索引为原列名,单列存储对应列的求和值:
Total Diet 4 Kin 5 LLFC 4 MH 13 Nursing 4
内容的提问来源于stack exchange,提问作者slickspidey
相关产品推荐
相关产品推荐

