2017-03-15 257 views
4

我有以下形式的數據幀創建鄰接矩陣:對大熊貓數據幀的兩列

index Name_A Name_B 
    0 Adam Ben 
    1 Chris David 
    2 Adam Chris 
    3 Ben  Chris 

而且我想獲得的鄰接矩陣Name_AName_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 

什麼是他們處理這個最pythonic /可擴展的方式?

編輯:另外,我知道,如果行Adam, Ben是在數據集中,然後在其他一些點,Ben, Adam也將在數據集中。

回答

5

您可以通過列和索引值的union使用crosstab然後reindex

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 
+0

謝謝,這正是我一直在尋找。 –