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

有没有简单方法将pandas Series转换为展示数值比率的交叉表?

实现方案

核心思路

利用numpy的广播特性做向量运算,无需循环,几行代码就能实现需求。

完整代码示例

import pandas as pd

# 1. 构造输入数据,实际使用时直接读取你的数据源即可
df = pd.DataFrame({
    'name': ['bob', 'fred', 'jim', 'anne'],
    'score': [2, 4, 1, 5]
})

# 2. 核心计算逻辑
s = df.set_index('name')['score']
result = pd.DataFrame(
    s.values.reshape(-1, 1) / s.values,
    index=s.index,
    columns=s.index
).reset_index()

# 可选:保留1位小数,和示例输出格式完全匹配
result = result.round(1)

逻辑说明

  • 先将name设为索引,提取出score对应的Series对象
  • 通过reshape(-1, 1)把一维的分数序列转为「n行1列」的二维数组,和原一维分数序列做除法时会自动广播为n×n的矩阵,每个元素的值正好是行对应用户的score ÷ 列对应用户的score,完全匹配你的计算规则
  • 给矩阵设置行、列名为用户名,重置索引后即可得到要求的输出格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:36:03