熊猫遍历行,创建数据框进行比较并计算距离

时间:2019-11-02 17:33:50

标签: python pandas

family                drafted   IQ>120 Height>6.5 ShootPctg >0.4
James                  2019      1       1          1
Richardson             2019      1       1          0 
Embid                  2019      0       1          1
Curry                  2019      1       0          1
Ingram                 2018      0       1          0
Ball                   2019      1       0          1
James                  2018      0       0          0
McGrady                2018      1       1          1
Curry                  2017      1       0          0
Embid                  2016      1       1          0
Kidd                   2015      1       1          1

让我们假设我有一个像这样的数据框,其中包含篮球运动员的姓名及其特征。在这个假想的数据集中,许多球员的兄弟姐妹都在同一个联赛中比赛,但选拔年限却不同。我有兴趣了解这些球员与之前选秀中的球员相比有何不同。但是,重要的一点是,我不想将这些球员与他们的兄弟姐妹进行比较。为此, 首先,我创建一个玩家特征向量:

df = df.assign(vector = df.iloc[:, -3:].values.tolist())
df['vector'] = df['vector'].apply(np.array)

然后我得到:

family                drafted   IQ>120 Height>6.5 ShootPctg >0.4 vector
    James                  2019      1       1          1        [1, 1, 1]
    Richardson             2019      1       1          0        [1, 1, 0]
    Embid                  2019      0       1          1        [0, 1, 1]
    Curry                  2019      1       0          1        [1, 0, 1]
    Ingram                 2018      0       1          0        [0, 1, 0]
    Ball                   2019      1       0          1        [1, 0, 1]
    James                  2018      0       0          0        [0, 0, 0]
    McGrady                2018      1       1          1        [1, 1, 1]
    Curry                  2017      1       0          0        [1, 0, 0]
    Embid                  2016      1       1          0        [1, 1, 0]
    Kidd                   2015      1       1          1        [1, 1, 1]

鉴于我现在有一个总结球员特征的向量,我可以简单地将每个球员的向量与前一年选出的球员(不包括兄弟姐妹)进行比较,然后取平均值。 让我们以詹姆斯起草的2019为例: 詹姆斯的陪衬将是2019年之前选拔的所有球员,不包括他的兄弟詹姆斯在2018年选拔的球员。即,

family                drafted   IQ>120 Height>6.5 ShootPctg >0.4 vector
    McGrady                2018      1       1          1        [1, 1, 1]
    Curry                  2017      1       0          0        [1, 0, 0]
    Embid                  2016      1       1          0        [1, 1, 0]
    Kidd                   2015      1       1          1        [1, 1, 1]

然后我想将James特征向量与上面列出的玩家的特征向量进行比较,并取平均值。最终输出应该是(注意:我在dstnctv列上补了数字):

family                drafted   IQ>120 Height>6.5 ShootPctg >0.4 dstnctv
        James                  2019      1       1          1     0.23
        Richardson             2019      1       1          0     0.12
        Embid                  2019      0       1          1     0.14
        Curry                  2019      1       0          1     0.23
        Ingram                 2018      0       1          0     0.12
        Ball                   2019      1       0          1     0.11
        James                  2018      0       0          0     0.09
        McGrady                2018      1       1          1     0.05
        Curry                  2017      1       0          0     0.11
        Embid                  2016      1       1          0     0.02
        Kidd                   2015      1       1          1     0.03

0 个答案:

没有答案