如何枚举熊猫的各列,并计算各列与其余各列之间的差异?

时间:2020-03-19 06:55:36

标签: python python-3.x

在我的数据集中,我有X_Coordinate和Y_Coordinate,为了计算紧密度中心性,我需要计算每个节点与其他节点之间的欧几里得距离之和。我尝试过:

for ind, row in allclosetA.iterrows():
    allclosetA.loc[ind, "Dist6_71"] = (row['ID71'] - row['ID6']) ** 2
    allclosetA.loc[ind, "Dist6_3"] = (row['ID3'] - row['ID6'])  ** 2
    allclosetA.loc[ind, "Dist71_3"] = (row['ID3'] - row['ID71']) ** 2
    allclosetA.loc[ind, "Dist71_6"] = (row['ID6'] - row['ID71'])  ** 2
    allclosetA.loc[ind, "Dist3_71"] = (row['ID71'] - row['ID3']) ** 2
    allclosetA.loc[ind, "Dist3_6"] = (row['ID6'] - row['ID3'])  ** 2

它运行良好,但是在我的情况下,列和ID都会更改,因此我需要自动运行代码以根据以下输出获取结果。 output

谢谢

2 个答案:

答案 0 :(得分:0)

不确定这是否行得通,但是由于您要通过“行”来获取X和y坐标,因此为什么不对距离值也做同样的操作。

所以代替:

allclosetA.loc[ind, "Dist6_71"] = (row['ID71'] - row['ID6']) ** 2

row["Dist6_71"] = (row['ID71'] - row['ID6']) ** 2

答案 1 :(得分:0)

我找到了以下解决方案可以针对其中的所有列运行它: D表示点的坐标(10个节点),A表示目标节点的坐标(4个节点)

>>Dist = distance.cdist(D, A, 'euclidean')

output will be as :

array([[12133.60222432, 14226.66590047, 13633.17137862, 11551.40491604],
       [11717.38072204, 14530.80182803, 13388.81377667, 11638.00260056],
       [11857.04168551, 14289.78968555, 13444.84417939, 11495.22703937],
       [12170.37182026, 14246.57297414, 13665.43033544, 11578.04979044],
       [11855.10630493, 14310.59694105, 13448.47824213, 11509.09643289],
       [11819.37984252, 14307.15862737, 13420.39712489, 11495.84805381],
       [11703.70538731, 14390.6746685 , 13349.46136896, 11525.60225697],
       [11839.17386385, 14305.76790429, 13435.17081908, 11500.84335837],
       [12374.10141775, 14259.01528361, 13815.13724876, 11669.28728949],
       [11701.63634533, 14442.87630321, 13358.71317513, 11565.26437527]])