我有一个以下形式的数据框:
index Name_A Name_B
0 Adam Ben
1 Chris David
2 Adam Chris
3 Ben Chris
我想获得邻接矩阵Name_A
and Name_B
, ie:
Adam Ben Chris David
Adam 0 1 1 0
Ben 0 0 1 0
Chris 0 0 0 1
David 0 0 0 0
解决这个问题最Pythonic/可扩展的方法是什么?
EDIT:另外,我知道如果行Adam, Ben
在数据集中,然后在其他某个点,Ben, Adam
也将在数据集中。
您可以使用crosstab http://pandas.pydata.org/pandas-docs/stable/generated/pandas.crosstab.html进而reindex http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.reindex.html by union http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Index.union.html列和索引值的数量:
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)