我有一个类似的数据框
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
如何实现......
我关注了Printing Lists as Tabular Data链接。但没有得到我想要的东西。
最佳答案
您需要旋转数据。这是一个例子。
pivot_df = df.pivot(index='from', columns='to', values='Amt')
要预先进行小数计算,您可以使用 groupby()
,然后使用 transform('sum')
。它类似于 SQL 窗口函数求和。
df['sums'] = df.groupby('from')['amt'].transform('sum')
df['frac'] = df['amt'] / df['sums']
df.pivot(index='from', columns='to', values='frac')
关于python - python中 Pandas 数据框的矩阵表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34488063/