我在pandas DataFrame中有数据,看起来像:
?-列中的朋友姓名
?-朋友的名字
?-我的朋友与其朋友之间的距离(在多个位置)
Friend Acquaintance Distance Acq.Country
0 Lennon Martin 25 England
1 Lennon McCartney 10 England
2 Lennon McCartney 60 Scotland
3 Lennon Harrison 200 India
4 Lennon Starr 40 England
5 Lennon Ono 350 Japan
7 McCartney Eastman 110 United States
8 Harrison Lennon 200 England
8 Harrison McCartney 220 England
9 Harrison Starr 222 England
我希望能够重新格式化数据,以使我有一个平均距离矩阵,其中包含朋友行和熟人列.该方法基本上是蛮力计算.关于如何使用更有效的代码的任何建议?
vectorR=data['Friends'].unique() #takes list of friends
vectorC=data['Acquaint'].unique() #list of acquaintances
distance_matrix=np.zeros((len(vectorR),len(vectorC)))
for i in range(0,len(vectorX)):
for j in range(0,len(vectorY)):
inter=(data['Person']==vectorR[i]) & (data['MatchName']==vectorC[j])
distance_avg=sum(data['Distance'][inter])/len(data['Distance'][inter])
distance_matrix[(i,j)]=distance_avg