팬더: 여러 열의 두 데이터 프레임을 병합(축소)
두 개의 열을 사용하여 두 개의 판다 데이터 프레임을 결합하려고 합니다.
new_df = pd.merge(A_df, B_df, how='left', left_on='[A_c1,c2]', right_on = '[B_c1,c2]')
단, 다음 오류가 발생하였습니다.
pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:4164)()
pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:4028)()
pandas/src/hashtable_class_helper.pxi in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:13166)()
pandas/src/hashtable_class_helper.pxi in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:13120)()
KeyError: '[B_1, c2]'
이 일을 하는 올바른 방법이 무엇인지 아십니까?감사합니다!
이거 드셔보세요
new_df = pd.merge(A_df, B_df, how='left', left_on=['A_c1','c2'], right_on = ['B_c1','c2'])
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html
left_on : 왼쪽 DataFrame에 가입하는 라벨 또는 목록 또는 배열과 같은 필드 이름.열 대신 조인 키로 특정 벡터를 사용하기 위해 DataFrame 길이의 벡터 또는 벡터 목록일 수 있습니다.
right_on : 오른쪽 DataFrame 또는 벡터/list per left_on docs에 가입하는 라벨 또는 목록과 같은 필드 이름
여기서의 문제는 아포스트로피를 사용함으로써 전달되는 값을 문자열로 설정하는 것입니다.사실 @Shijo가 설명서에서 설명한 것처럼 함수는 라벨이나 목록을 기대하지만 문자열은 기대하지 않습니다.목록에 왼쪽 및 오른쪽 데이터 프레임에 대해 전달된 각 열의 이름이 포함되어 있는 경우 각 열 이름은 개별적으로 아포스트로피 내에 있어야 합니다.앞에서 설명한 내용을 통해 이것이 왜 직장 내인지 이해할 수 있습니다.
new_df = pd.merge(A_df, B_df, how='left', left_on='[A_c1,c2]', right_on = '[B_c1,c2]')
이 기능을 사용하는 올바른 방법은 다음과 같습니다.
new_df = pd.merge(A_df, B_df, how='left', left_on=['A_c1','c2'], right_on = ['B_c1','c2'])
또 다른 방법은 다음과 같습니다.
new_df = A_df.merge(B_df, left_on=['A_c1','c2'], right_on = ['B_c1','c2'], how='left')
다음과 같이 짧고 알기 쉬운 것을 사용할 수 있습니다.
merged_data= df1.merge(df2, on=["column1","column2"])
언급URL : https://stackoverflow.com/questions/41815079/pandas-merge-join-two-data-frames-on-multiple-columns
'itsource' 카테고리의 다른 글
PHP에서 정적 코드 분석을 수행하려면 어떻게 해야 합니까? (0) | 2023.02.06 |
---|---|
단일 SQL 문의 열 헤더 출력을 억제하려면 어떻게 해야 합니까? (0) | 2023.02.06 |
file_put_module - 스트림을 열지 못했습니다.권한 거부 (0) | 2023.02.06 |
비동기 작업을 수행하는 Redx 모달 대화 상자를 표시하려면 어떻게 해야 합니까? (0) | 2023.01.28 |
Python에서 변수와 함수에 대한 명명 규칙은 무엇입니까? (0) | 2023.01.28 |