2017-08-02 71 views
-3

我的數據框是一個具有不同數據的足球比賽列表,大約有300個條目。切換熊貓的每第二排值

game_id team opp_team avg_marks 
0  2919  STK  BL  122 
1  2919  BL  STK  114 
2  2920  RICH SYD  135 
3  2920  SYD  RICH  108 

我想反對派統計添加爲每個條目的新列。得到的數據框會出現這樣的

game_id team opp_team avg_marks opp_avg_marks 
0  2919  STK  BL  122   114 
1  2919  BL  STK  114   122 
2  2920  RICH SYD  135   108 
3  2920  SYD  RICH  108   135 

任何建議將是最歡迎,我是新來這個論壇。我已經嘗試過映射,但條目是以2列,game_id和opp_team爲條件的。
理想情況下,我會將它添加到原始電子表格中,但是我在熊貓中創建了季節的累計平均值,所以希望能有一種方法來合併這個。

回答

0

,你可以在game_id組和扭轉avg_marks

In [725]: df.groupby('game_id')['avg_marks'].transform(lambda x: x[::-1]) 
Out[725]: 
0 114 
1 122 
2 108 
3 135 
Name: avg_marks, dtype: int64 

In [726]: df['opp_avg_marks'] = (df.groupby('game_id')['avg_marks'] 
            .transform(lambda x: x[::-1])) 

In [727]: df 
Out[727]: 
    game_id team opp_team avg_marks opp_avg_marks 
0  2919 STK  BL  122   114 
1  2919 BL  STK  114   122 
2  2920 RICH  SYD  135   108 
3  2920 SYD  RICH  108   135 

或者,從teamavg_marks得到字典映射,然後在opp_team

In [729]: df['opp_team'].map(df.set_index('team')['avg_marks'].to_dict()) 
Out[729]: 
0 114 
1 122 
2 108 
3 135 
Name: opp_team, dtype: int64 
+0

由於使用map這麼多。我一直在研究這麼久 –