>source

유사한 테이블 df1 사이에 왼쪽 조인을 시도하고 있습니다  그리고 df2  다음과 같이 :

테이블 df2 :

Year    Team    Elo
1975    ANA     1483.527161
1975    BOS     1528.148559
1976    ARI     1499.237268
1976    LAD     1533.241241
1977    ATL     1490.446315
1978    BAL     1533.906786
1979    BOS     1528.148559
1980    CHC     1473.185062
1981    CHW     1494.119
1981    PIT     1507.463466

이 예제에서 실제 테이블과의 차이점은 원래 df2 라는 점입니다.  테이블은 약 40 개의 다른 연도를 포함하고 매년 약 20 개의 다른 팀을 포함합니다. 매년 각 팀마다 다른 Elo 가치가 있습니다. "

그리고이 테이블은 df1  :

Game_ID         Team    Value 1     Value2      Year
HOU197504070    ANA     HOU         ATL         1975
HOU197504080    LAD     LAD         ATL         1975
HOU197504070    BOS     ATL         CHW         1975
HOU197504080    CHC     HOU         ATL         1975

사용하려는 코드는 다음과 같습니다.

df1= df1.join(df2, on=['Year','Team'])

그러나이 오류가 발생합니다 :

ValueError: len(left_on) must equal the number of levels in the index of "right"

예상되는 결과는

   Game_ID         Team    Value 1     Value2      Year    Elo
    HOU197504070    ANA     HOU         ATL         1975    1483.527161
    HOU197504080    LAD     LAD         ATL         1975    0
    HOU197504070    BOS     ATL         CHW         1975    1528.148559
    HOU197504080    CHC     HOU         ATL         1975    0

감사합니다.


  • 답변 # 1

    조인이 아닌 병합이 필요합니다 (후자는 색인에서 병합을 시도합니다) :

    df1.merge(df2, on=['Year', 'Team'], how='left').fillna(0)
    
    

관련 자료

  • 이전 javascript - 내보내기 후에도 ProcessenvVAR_NAME이 정의되지 않았습니다
  • 다음 r - Openxlsx는 시트를 보호하지만 값을 입력 할 수 있습니다