2014-04-21 1 views
3
I가 dataframes에있는

추가 _x있는 열을 반환 A, B, C, D ...DF2는 열이 A, B, E, F ...팬더 '병합 <em>DF1</em>는 열이 이름

합병하려는 키는 입니다. B도 두 데이터 프레임에서 동일합니다. 이것은 대용량 데이터 세트 임에도 불구하고 청소 작업을하고 있으므로 아직 모든 것에 대한 매우 좋은 개요는 없습니다.

나는

merge(df1, df2, on='A') 

을 그리고 결과는 B_x라는 열이 포함되어 있습니다. 데이터 세트가 크고 지저분한 때문에 나는 그래서 제 질문은 단지 일반적이다 B_x이 DF2

DF1BB 어떻게 다른지 조사하기 위해 시도하지 않은 : 판다 무엇을 의미 하는가 병합 된 데이터 프레임의 열 이름에 _x를 추가했을 때? 당신이

+0

온라인 문서를 참조하십시오 이 작업을 수행하려면 B 열의 이름을 df2에서 바꿔야합니다. – chucklukowski

+0

Ok. 고맙습니다. 내 의견에 의해 답변으로 표시하려면 어떻게해야합니까? – luffe

답변

5

접미사가 병합 작업에 포함되지 않은 열 이름의 모든 충돌에 대한 추가, online docs를 참조

는 감사드립니다. 귀하의 경우 그래서

당신은 그들이 당신이 단지 두 열을 병합 할 수 동일이라고 생각하면이 비록 무엇을 할 것 인

pd.merge(df1, df2, on=['A', 'B']) 

AB 모두 dataframes에 존재하는 경우에만 값을 반환이다 기본 병합 유형은 inner 병합이므로

그래서 당신이 할 수있는 것은 이것이 당신의 첫 번째와 안양 크기를 통합 비교하고 그들이 동일 있는지 확인하고 그래서 당신은 모두 열을 병합을 할 수있는하거나 삭제할 경우 /를 _x/_y 접미사를 B 열 이름을 변경합니다.

이 값이 실제로 동일하고 모두 dataframes에 존재하는 경우, 결정하는 경우에 당신이 outer 병합을 수행 할 수 있지만 내가 시간을 보낼 것입니다 : 다음 드롭 당신이 할 수있는 무엇인가 그리고

pd.merge(df1, df2, on=['A', 'B'], how='outer') 

을 중복 행 (가능하게는 NaN 행)이며 이는 합병 된 데이터 프레임을 제공해야합니다.

merged_df.drop_duplicates(cols=['A', 'B'],inplace=True) 

그것은 df1.B 및 df2.B. 모두에서, 모든 값을 유지하고있다 drop_duplicates