在特定索引,Python,Pandas中添加缺失数据

时间:2017-10-28 13:22:34

标签: python pandas dataframe

我有一个包含NBA球员和球位置的大型数据集,我希望将其分成11个数据集,每个数据集将包含球,player1,player2,player3,player4 ... player10的位置。

所以我将最初基于索引的数据集划分为:

ball_set = training_set.iloc[0::11,:]
player1_set = training_set.iloc[1::11,:]
player2_set = training_set.iloc[2::11,:]
player3_set = training_set.iloc[3::11,:]
player4_set = training_set.iloc[4::11,:]
player5_set = training_set.iloc[5::11,:]
player6_set = training_set.iloc[6::11,:]
player7_set = training_set.iloc[7::11,:]
player8_set = training_set.iloc[8::11,:]
player9_set = training_set.iloc[9::11,:]
player10_set = training_set.iloc[10::11,:]

但后来我意识到,无论出于何种原因,一些球位置都会丢失,所以在第一次失球后这种分割数据集的方式不起作用。

我试图通过使用列名来实现,但问题是我最终得到的球员位置多于球位置。

所以我的问题是:如何修改数据集:

每当我发现球位置丢失时,我将最后一个已知位置添加到新位置的位置,然后我修改索引,这样每个第n个元素采样继续工作。数据集非常大,我无法想到一种不会太耗时的方法。很抱歉解释问题很困难。

print(ball.head(10))
    team_id  player_id     x_loc    y_loc   radius  game_clock  shot_clock  \
0        -1         -1  75.32556  5.98097  5.49124      706.62        8.92   
11       -1         -1  76.07296  5.46993  5.15024      706.58        8.90   
22       -1         -1  76.81954  5.19475  4.95356      706.54        8.88   
33       -1         -1  77.57706  5.46789  4.93948      706.49        8.86   
44       -1         -1  78.24726  5.89358  4.89680      706.45        8.85   
55       -1         -1  78.98622  6.39669  4.75053      706.41        8.83   
66       -1         -1  79.75325  6.93706  4.44634      706.37        8.81   
77       -1         -1  80.55254  7.51884  3.98987      706.33        8.80   
88       -1         -1  81.38831  8.14618  3.38672      706.29        8.78   
99       -1         -1  82.26478  8.82324  2.64252      706.25        8.76   

    quarter   game_id  event_id  
0         1  21500491         1  
11        1  21500491         1  
22        1  21500491         1  
33        1  21500491         1  
44        1  21500491         1  
55        1  21500491         1  
66        1  21500491         1  
77        1  21500491         1  
88        1  21500491         1  
99        1  21500491         1  

在某个索引缺失数据开始出现后,每第11个值不再是球。

Dataframe看起来像这样:

  team_id  player_id     x_loc     y_loc   radius  game_clock  \
0           -1         -1  75.32556   5.98097  5.49124      706.62   
1   1610612748       2547  63.70920  34.45719  0.00000      706.62   
2   1610612748       2736  81.69544  11.30207  0.00000      706.62   
3   1610612748     201609  70.29572   7.46278  0.00000      706.62   
4   1610612748     202355  83.90212  34.19776  0.00000      706.62   
5   1610612748     204020  87.10757  47.84178  0.00000      706.62   
6   1610612742       1717  73.23341  27.90537  0.00000      706.62   
7   1610612742     200826  84.12922  31.64608  0.00000      706.62   
8   1610612742       2585  84.09753  28.95075  0.00000      706.62   
9   1610612742     202083  82.54378  13.31071  0.00000      706.62   
10  1610612742     202718  74.64288  11.58677  0.00000      706.62   
11          -1         -1  76.07296   5.46993  5.15024      706.58   
12  1610612748       2547  63.76077  34.51266  0.00000      706.58   
13  1610612748       2736  81.80397  11.24143  0.00000      706.58   
14  1610612748     201609  70.21050   7.43250  0.00000      706.58   
15  1610612748     202355  83.91800  34.18653  0.00000      706.58   
16  1610612748     204020  87.11137  47.84143  0.00000      706.58   
17  1610612742       1717  73.24258  27.92304  0.00000      706.58   
18  1610612742     200826  84.13441  31.70566  0.00000      706.58   
19  1610612742       2585  84.04476  28.94076  0.00000      706.58   
20  1610612742     202083  82.61667  13.24250  0.00000      706.58   

    shot_clock  quarter   game_id  event_id  
0         8.92        1  21500491         1  
1         8.92        1  21500491         1  
2         8.92        1  21500491         1  
3         8.92        1  21500491         1  
4         8.92        1  21500491         1  
5         8.92        1  21500491         1  
6         8.92        1  21500491         1  
7         8.92        1  21500491         1  
8         8.92        1  21500491         1  
9         8.92        1  21500491         1  
10        8.92        1  21500491         1  
11        8.90        1  21500491         1  
12        8.90        1  21500491         1  
13        8.90        1  21500491         1  
14        8.90        1  21500491         1  
15        8.90        1  21500491         1  
16        8.90        1  21500491         1  
17        8.90        1  21500491         1  
18        8.90        1  21500491         1  
19        8.90        1  21500491         1  
20        8.90        1  21500491         1  

Here's where the problem occurs

0 个答案:

没有答案