2017-04-25 5 views
0

나는 테니스 데이터 세트로 작업하며 향상된 정보 성을 위해 변환하려고합니다. 나는 내 문제에 대한 해결책을 찾고 있었지만 아직 아무것도 찾지 못했다.테니스 데이터 프레임에 평균 통계 값이있는 열 만들기

각 행의 각 플레이어의 이전 경기에 대한 평균 통계 값을 표시 할 열을 만들고 싶습니다. 아시다시피, 모든 행에는 이전 게임에 대한 평균 통계 지수가있는 플레이어 1에 대한 값과 플레이어 2에 대한 값이 있어야합니다. 또한 이전 경기에서 1 위 또는 2 위일 때 가치를 취해야합니다. 여기

은 데이터 세트의 일부입니다

Player 1  Player 2  P1_Prct1stIn P2_Prct1stIn P1_Prct1stWon P2_Prct1stWon 
1 Djokovic N. Raonic M.  0.644444  0.576923   0.724138 0.844444 
2 Cilic M.  Wawrinka S. 0.450000  0.610390   0.861111 0.787234 
3 Nishikori K. Murray A.  0.630252  0.530303   0.720000 0.757143 
4 Raonic M.  Thiem D.  0.637931  0.545455   0.864865 0.6666671 
5 Djokovic N. Goffin D.  0.614035  0.468085   0.828571 0.590909 
6 Wawrinka S. Murray A.  0.611940  0.588235   0.658537 0.866667 
7 Nishikori K. Cilic M.  0.635135  0.545455   0.638298 0.809524 
8 Raonic M.  Murray A.  0.632812  0.609589   0.740741 0.617978 
9 Nishikori K. Djokovic N. 0.636364  0.636364   0.514286 0.821429 
10 Murray A. Djokovic N. 0.542373  0.721311   0.843750 0.590909 

Prct1stIn - 1의 비율이

Prct1stWon에서 봉사 - 1의 비율 집회가

그래서 내가 열이 데이터 세트를 사용하여 만든 필요 원 제공 좋아요 :

P1_PREV_MEAN_Prct1stIn 
NaN 
NaN 
NaN 
NaN 
0.644444 
0.610390 
0.630252 
0.607427 
0.6326935 
0.57604233 

예를 들어, 선수의 마지막 경기 10 경기의 평균치를 취하는 방법.

이 문제를 결정하는 데 도움이 되었으면 감사합니다.

답변

0

우선은


유용한 pd.MultiIndex

mux = pd.MultiIndex.from_tuples([ 
     ('P1', 'Name'), ('P2', 'Name'), 
     ('P1', 'Prct1stIn'), ('P2', 'Prct1stIn'), 
     ('P1', 'Prct1stWon'), ('P2', 'Prct1stWon') 
    ]) 

d1 = pd.DataFrame(df.values, df.index, mux).sort_index(1) 
print(d1) 

enter image description here가 지금은 stackgroupby'Name'shift을이었다 applyexpandingmean가 거라고을 거라고 만들 것

f = lambda x: x.expanding().mean().shift() 
g = d1.stack(0).groupby('Name')[['Prct1stIn', 'Prct1stWon']] 
d2 = g.apply(f).unstack().swaplevel(0, 1, 1) 
d1.join(d2, rsuffix=' Prior Mean') 

enter image description here

+0

답변 해 주셔서 감사합니다. 불행히도 전체 데이터 집합을 처리 할 때이 방법은 효과가 없습니다 (여기에서는 일부만 보여 줬습니다). – Maxim

+0

더 보여줄 계획입니까? 또는 무엇이 잘못되었는지 공유하고 싶습니까? – piRSquared

+0

예, 문제 없습니다! 그것을 보는 링크는 다음과 같습니다. https://github.com/maanisimov/Tennis-matches-analysis/blob/master/Analysis%20of%20Tennis%20Bets%20Formation%20in%20the%20BM.ipynb. 원본 정보가있는 사이트에 대한 링크가 있습니다. 데이터 프레임을 시청해야하기 때문에 러시아어로 혼동하지 않을 것이라고 생각합니다. 하지만 문제가된다면 영어 버전을 만들 수 있습니다. – Maxim

관련 문제