2017-10-11 5 views
2

두 데이터 프레임을 결합하려고합니다.두 번째 데이터 프레임의 값 조회

Date  HomeTeam  AwayTeam 
0 06/01/14 Real Madrid Celta Vigo 
1 06/01/14 Celta Vigo Valencia 

그리고 다음과 같다 두 번째 하나를 : 다음과 같이 첫 번째 보이는

EVENT_ID HomeTeam  AwayTeam SELECTION ODDS 
0 112324699 Real Madrid  Celta Vigo Celta Vigo 47.50 
1 112324699 Real Madrid  Celta Vigo Real Madrid 1.13 
2 112324699 Real Madrid  Celta Vigo The Draw 16.00 
3 112369682 Celta Vigo  Valencia Celta Vigo 3.30 
4 112369682 Celta Vigo  Valencia The Draw 3.55 
5 112369682 Celta Vigo  Valencia Valencia 2.43 

그래서 기본적으로 3 개 행을 가지고 한 경기 두 번째 dataframe에서 한 팀과 하나 하나에 대한 각 해당 승률 (ODDS)을 가진 추첨 (선택).

는 내가 지금하고 싶은 첫 번째 dataframe 두 번째 dataframe에서 확률에 대한 정보를 추가, 그래서 다음과 같이 살고 싶지 :

Date  HomeTeam  AwayTeam OddsHome OddsDraw OddsAway 
0 06/01/14 Real Madrid Celta Vigo 1.13  16.00  47.50 
1 06/01/14 Celta Vigo Valencia 3.30  3.55  2.43 

내가 작성하고 적용하려 조회 기능을 제공하지만 비참하게 실패했습니다.
어쩌면 나를 도울 수 있습니까?

답변

1

다른 솔루션 :

df2=df2.merge(df1,on=['HomeTeam','AwayTeam'],how='left') 
df2['SELECTION']=df2.groupby('EVENT_ID').apply(lambda x : x.SELECTION.replace({x.HomeTeam.values[0]:'Home',x.AwayTeam.values[0]:'Away'})).values 
df2.set_index(['HomeTeam','AwayTeam','Date','SELECTION']).ODDS.unstack().reset_index() 
Out[1151]: 
SELECTION HomeTeam AwayTeam  Date Away Home TheDraw 
0   CeltaVigo Valencia 06/01/14 2.43 3.30  3.55 
1   RealMadrid CeltaVigo 06/01/14 47.50 1.13 16.00 
3

나는 지금

df1.merge(new_df2, on = ['HomeTeam', 'AwayTeam']).drop('EVENT_ID', axis = 1) 

당신이 얻을 병합 사용이

df2['SELECTION'] = np.where(df2['SELECTION'] == df2['HomeTeam'], 'Home', np.where(df2['SELECTION'] == df2['AwayTeam'],'Away', 'Draw')) 

new_df2 = df2.set_index(['EVENT_ID','HomeTeam','AwayTeam','SELECTION']).unstack().reset_index() 
new_df2.columns = new_df2.columns.map(''.join) 

    EVENT_ID HomeTeam AwayTeam ODDSAway ODDSDraw ODDSHome 
0 112324699 Real Madrid Celta Vigo 47.50  16.00  1.13 
1 112369682 Celta Vigo Valencia 2.43  3.55  3.30 

처럼 보이도록 new_df2에 DF2를 바꿀 것

Date  HomeTeam AwayTeam ODDSAway ODDSDraw ODDSHome 
0 06/01/14 Real Madrid Celta Vigo 47.50  16.00  1.13 
1 06/01/14 Celta Vigo Valencia 2.43  3.55  3.30 
관련 문제