두 데이터 프레임이 있습니다. 하나는 팀 목록과 날짜순으로 정렬 된 점수이고 두 번째는 개별 날짜입니다. 나는이 dataframes에서 통계를 일치하는 60 열이, 나는 상대가 DF1에서 이전 날짜에 있던 평균 DF2 각 열의 값을 대체하는 코드가 노력하고 있어요 : 그래서에서다른 데이터 프레임의 조건부 그룹을 사용하여 팬더 데이터 프레임 채우기
df1: df2:
date team scr name team opp date scr
0 2016-04-03 KCR 5.70 0 Erasmo Ramirez TBR TOR 2016-04-06 7.90
1 2016-04-03 NYM 4.70 1 Erasmo Ramirez TBR BAL 2016-04-10 1.30
2 2016-04-03 PIT 6.30 2 Erasmo Ramirez TBR CLE 2016-04-13 9.30
3 2016-04-03 STL 3.40 etc...
4 2016-04-03 TBR 4.80
5 2016-04-03 TOR 6.20*
6 2016-04-04 ARI 7.40
7 2016-04-04 ATL 5.30
8 2016-04-04 BAL 7.00
9 2016-04-04 CHC 9.60
10 2016-04-04 TOR 7.50*
etc...
을 이 예제는 df2에서 'scr'아래의 첫 번째 항목이 7.90에서 6.85로 변경되어 4-6 (4-3 및 4-4)까지 이어지는 날짜에 대한 TOR의 평균 scr이므로
시도했습니다. 다음과 같은 (그리고 다른 유사한 옵션) 그리고 운이 없었다 :
jf = df1.groupby('team')
df2['scr'] = jf.apply(lambda x: x[(df1['date']<x['date'])&(df1['team']==x['opp'])]['scr'].sum())
ValueError: Series lengths must match to compare
어떤 solutio NS? 또한 단 한 블록의 코드로 모든 열을 반복 할 수있는 방법이 있습니까? 아니면 각 열마다 코드를 사용해야합니까?