我有一个格式为的数据框:
Element
我想获得index Name_A Name_B
0 Adam Ben
1 Chris David
2 Adam Chris
3 Ben Chris
和Name_A
的邻接矩阵,即:
Name_B
解决这个问题最灵活/可扩展的方法是什么?
编辑:此外,我知道如果行 Adam Ben Chris David
Adam 0 1 1 0
Ben 0 0 1 0
Chris 0 0 0 1
David 0 0 0 0
在数据集中,那么在其他某个点,Adam, Ben
也将位于数据集中。
答案 0 :(得分:15)
您可以使用crosstab
,然后使用reindex
union
列和索引值:
df = pd.crosstab(df.Name_A, df.Name_B)
print (df)
Name_B Ben Chris David
Name_A
Adam 1 1 0
Ben 0 1 0
Chris 0 0 1
df = pd.crosstab(df.Name_A, df.Name_B)
idx = df.columns.union(df.index)
df = df.reindex(index = idx, columns=idx, fill_value=0)
print (df)
Adam Ben Chris David
Adam 0 1 1 0
Ben 0 0 1 0
Chris 0 0 0 1
David 0 0 0 0