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

如何用Python对DataFrame两列做交叉除法生成指定矩阵?

Python实现A/B交叉除法矩阵

核心逻辑利用数组广播机制,无需手写双层循环,即可快速生成行列索引均为原数据集Index的交叉计算矩阵。

实现步骤

  • 首先加载/构造原始数据集,将Index列设为数据框索引
  • 将A列转换为n行1列的二维数组,B列保持1行n列的结构,通过numpy/pandas的广播特性自动完成逐元素交叉除法
  • 给计算结果赋值行、列索引,按需保留指定位数的小数即可

完整代码

import pandas as pd

# 构造原始数据集
df = pd.DataFrame({
    'Index': ['T-1', 'T-2', 'T-3', 'T-4'],
    'A': [4, 18, 24, 49],
    'B': [2, 3, 4, 7],
    'C': [2, 6, 6, 7]
}).set_index('Index')

# 交叉除法计算:每行取对应A值,每列取对应B值做除法
cross_matrix = pd.DataFrame(
    # A列转为4行1列结构,和1行4列的B列做广播除法
    df['A'].to_numpy().reshape(-1, 1) / df['B'].to_numpy(),
    index=df.index,
    columns=df.index
).round(2)

print(cross_matrix)

运行输出

T-1    T-2    T-3   T-4
T-1   2.00   1.33   1.00  0.57
T-2   9.00   6.00   4.50  2.57
T-3  12.00   8.00   6.00  4.00
T-4  24.50  16.33  12.25  7.00

注:你给出的示例期望结果中T-1行T-3列的0为笔误,按照A/B计算逻辑,T-1行A值为4、T-3列B值为4,正确计算结果为1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 02:36:15