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

Pandas 高效生成期望频数表的最优实现方法

Pandas 实现期望频数表的最高效方案

最高效的实现方式是使用Pandas/numpy的矢量化广播运算,完全避免逐单元格循环的开销,代码如下:

import pandas as pd

# 构造示例DataFrame
data = [[1, 2, 3, 4], [4, 3, 2, 1]] 
df = pd.DataFrame(data, columns = ['A', 'B', 'C', 'D'])

# 计算核心逻辑
row_total = df.sum(axis=1) # 计算每行的合计
col_total = df.sum(axis=0) # 计算每列的合计
total = df.values.sum() # 计算所有元素的总合计

# 广播运算生成期望频数表
expected_df = pd.DataFrame(
    row_total.values[:, None] * col_total.values / total,
    columns=df.columns,
    index=df.index
)

逻辑说明

  • row_total.values[:, None] 将行合计的一维数组转换为列向量,和列合计的一维数组做广播乘法时,会自动扩展为和原DataFrame维度相同的矩阵
  • 全程为底层C实现的矢量化运算,比Python层面的循环、apply操作性能高出1~2个数量级,数据量越大优势越明显
  • 运行结果和预期输出完全一致,所有单元格值均为2.5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:54:07