0
아래 그림과 같이 팬더에는 두 개의 데이터 프레임이 있습니다. EmpID는 두 데이터 프레임의 기본 키입니다.전체 외부 조인을 사용하여 팬더에서 두 개의 데이터 프레임 결합
df_first = pd.DataFrame([[1, 'A',1000], [2, 'B',np.NaN],[3,np.NaN,3000],[4, 'D',8000],[5, 'E',6000]], columns=['EmpID', 'Name','Salary'])
df_second = pd.DataFrame([[1, 'A','HR','Delhi'], [8, 'B','Admin','Mumbai'],[3,'C','Finance',np.NaN],[9, 'D','Ops','Banglore'],[5, 'E','Programming',np.NaN],[10, 'K','Analytics','Mumbai']], columns=['EmpID', 'Name','Department','Location'])
나는다는 EmpID 이러한 두 dataframes에 가입 할 그래서
한 dataframe에서- 와 관찰이있는 경우 새 키가 생성 된 데이터 프레임에 추가되어야합니다.
나는 이것을 달성하기 위해 아래 코드를 사용했습니다.
merged_df = pd.merge(df_first,df_second,how='outer',on=['EmpID'])
그러나이 코드는 내가 원하지 않는 중복 열을 제공하므로 병합을 위해 두 테이블의 고유 한 열만 사용했습니다.
ColNames = list(df_second.columns.difference(df_first.columns))
ColNames.append('EmpID')
merged_df = pd.merge(df_first,df_second,how='outer',on=['EmpID'])
이제 중복 열은 없지만 키가 일치하는 관측 값을 얻지는 못합니다.
누군가가이 문제를 해결할 수 있다면 정말 감사하겠습니다.
감사합니다, KAILASH 네기
이 솔루션은 목적을 달성하지만 열 순서를 유지할 수 있는지 확인하기를 원했습니다. 먼저 첫 번째 데이터 프레임부터 두 번째 데이터 프레임까지의 열을 가져야합니다. 또한 외부 조인을 사용하여 수행 할 수 있다면 여전히 생각 중입니다. –
이해가 확실하지 않은 이유는 무엇입니까? 더 설명해 주시겠습니까? – jezrael
실제 데이터 세트에는 약 200 개의 열이 있으며 특정 순서로 설정됩니다. 데이터 집합은 오랜 시간 동안 만 순서대로 처리되었으며이 작업을 수행하면이 데이터 집합에서 작업하는 사람들이 익숙하지 않은 정렬 된 열 순서가 지정됩니다. 그래서 열 순서를 보존 할 수있는 방법이 있다면 그냥 생각하고있었습니다. –