您可以使用pivot_table
with 和聚合函数len
来构建矩阵:
df.pivot_table(values='Destination', index="Origin", columns='Destination',
fill_value=0, aggfunc=len)
这使:
Destination 2 3 4
Origin
1 1 1 1
2 0 1 0
3 0 0 1
但是您只会发现原始矩阵中存在的起点和终点。
如果您希望每个可能的端点都有一行和一列,则必须首先构建一个空矩阵,然后添加上面的矩阵:
resul = pd.DataFrame(0, index=list(range(1,5)), columns = list(range(1,5))
).add(df.pivot_table(values='Destination', index="Origin",
columns='Destination', aggfunc=len),
fill_value=0).astype('int')
这给出了预期的矩阵:
1 2 3 4
1 0 1 1 1
2 0 0 1 0
3 0 0 0 1
4 0 0 0 0