我有一个数据框

 from   to  Amt
 a      b   100
 a      c   200
 a      d   220
 b      a   250
 b      c   300
 b      d   330
 c      a   100
 c      b   120
 c      d   320
 d      a   211
 d      b   980
 d      c   430

我想用矩阵的形式来表示
     a     b     c    d
a    0    100    200  220
b   250    0     300  330
c   100   120    0    320
d   211   980    430   0

。。

最佳答案

。这是一个例子。

pivot_df = df.pivot(index='from', columns='to', values='Amt')

对于手动之前进行分数计算,可以使用groupby()然后transform('sum')。。
df['sums'] =  df.groupby('from')['amt'].transform('sum')
df['frac'] = df['amt'] / df['sums']
df.pivot(index='from', columns='to', values='frac')

08-24 18:29
查看更多