有没有一种简单的方法可以将 pandas 系列转换为该系列中值的比率交叉表?

cgo*_*die 3 python matrix crosstab pandas

输入

name    score
bob     2           
fred    4           
jim     1           
anne    5   
Run Code Online (Sandbox Code Playgroud)

期望的输出(分数比率:例如第 1 行中的 bob*fred = 2/4 等)

name    bob fred    jim anne
bob     1   0.5     2   0.4
fred    2   1       4   0.8
jim     0.5 0.2     1   0.2
anne    2.5 1.25    5   1
Run Code Online (Sandbox Code Playgroud)

Shu*_*rma 5

我们可以尝试用outer来计算列np.divide.outer的外除score

n, s = df.to_numpy().T
pd.DataFrame(np.divide.outer(s, s), n, n)
Run Code Online (Sandbox Code Playgroud)
      bob  fred  jim anne
bob   1.0   0.5  2.0  0.4
fred  2.0   1.0  4.0  0.8
jim   0.5  0.25  1.0  0.2
anne  2.5  1.25  5.0  1.0
Run Code Online (Sandbox Code Playgroud)