>

데이터 프레임이 3 개 있는데 가입 할 때 오류가 발생합니다. 3 가지 데이터 프레임은 다음과 같습니다.

이름 : r_df 열 1 : lab_key 열 2 : 프레임

이름 : f_df 열 1 : lab_key 열 2 : 광학

이름 : m_df 열 1 : lab_key 열 2 : 입술

세 개의 데이터 프레임은 모두 250 행의 동일한 행 수를 가지며 각 데이터 프레임은 동일한 lab_keys를 갖습니다.

내 코드는 다음과 같습니다 :

newDF = r_df.join(f_df, r_df.lab_key == f_df.lab_key).join(m_df, r_df.lab_key == m_df.lab_key).select('r_df.frame', 'f_df.optic', 'm_df.res')

오류가 발생합니다 :

Py4JJavaError : o902.join을 호출하는 중에 오류가 발생했습니다. : org.apache.spark.sql.AnalysisException : 'lab_key'참조가 모호합니다. lab_key # 1648, lab_key # 1954.;

문제가 무엇인지에 대해서는별로 도움이되지 않습니다. 다음과 같은 열이있는 하나의 데이터 프레임을 얻으려고합니다.

Col ​​1 : Lab_Key
열 2 : 프레임
열 3 : 광학
골 4 : 입술

이 세 가지 데이터 프레임에 참여하도록 도와 줄 수 있습니까?

  • 답변 # 1

    첫 번째 조인 이후 생성 된 pyspark 데이터 프레임에 정확히 동일한 열 이름을 가진 두 개의 열이 있기 때문입니다.

    r_df.join(f_df, ["lab_key"]).join(m_df, ["lab_key"])
    
    

    연결하는 키가 동일한 경우 데이터 프레임에서 해당 열을 구체적으로 참조 할 필요는 없지만 대신 이름을 배열로 지정하십시오. 그러면 Pyspark는 최종 데이터 프레임에서 해당 이름을 가진 열을 하나만 만들도록 지시합니다

관련 자료

  • 이전 python 2.7 - simpy - 여러 (비특이적) 리소스 요청 및 요청 순서
  • 다음 javascript - 경고 - 실패한 소품 유형 : '이미지'에 잘못된 소품`소스 '가 제공되었습니다