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

Pandas中如何实现DataFrame列总和除以所在行总和的计算

pandas实现DataFrame「列总和/对应行总和」的单元格转换

实现思路

利用pandas的数组广播机制,无需编写逐行逐列的循环逻辑:

  • 先按列聚合得到每列的总和,结果为1行N列的序列
  • 再按行聚合得到每行的总和,将其转为N行1列的列向量
  • 两个数组直接做除法时,pandas会自动广播为和原DataFrame同维度的结果,每个单元格(i,j)的取值刚好为第j列总和除以第i行总和,完全匹配计算规则。

完整实现代码

import pandas as pd

# 构造题目给出的初始3行3列DataFrame
df = pd.DataFrame([
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
])

# 核心计算逻辑
col_sum = df.sum(axis=0)  # 计算每列总和,对应示例中列0/1/2总和为12、15、18
row_sum = df.sum(axis=1).values.reshape(-1, 1)  # 计算每行总和并转为列向量,对应行0/1/2总和为6、15、24
result = col_sum / row_sum  # 广播运算得到最终结果

结果验证

打印result可得到和题目预期完全一致的输出:

0      1     2
0  2.0  2.500  3.00
1  0.8  1.000  1.20
2  0.5  0.625  0.75

如果需要直接覆盖原DataFrame的数值,直接执行df = col_sum / row_sum即可,原索引、列名会自动保持对齐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 22:09:18