Programming/Python
Pandas 기존 데이터와 다른 증분 차집합 구하는 방법
remake
2023. 4. 17. 17:58
오늘은 판다스에서 기존 데이터에서 업데이트 된 증분만을 찾는 방법을 알아보겠습니다.
즉 차집합을 구하는 것인데요.
예를 들어 두개의 엑셀 파일에서 새로운 행만 변경하는 것을 코딩해보도록 하겠습니다.
먼저 폴더에서 xlsx로 된 파일을 찾습니다.
아래의 코드를 통해 file_list2라는 것에 엑셀 파일을 불러옵니다.
그리고 가장 최근의 파일과 [-1] 다음번의 파일인 [-2]를 불러옵니다
#파일 리스트 구하기
file_list1 = os.listdir(allDir)
file_list2 = [file for file in file_list1 if file.endswith(".xlsx")]
file_list2.sort()
df1 = pd.read_excel(allDir+file_list2[-1])
df2 = pd.read_excel(allDir+file_list2[-2])
이 두개의 값을 비교하여 추가된 파일을 찾을텐데요.
Pandas 두개의 엑셀 파일 차이나는 값 찾기
간단하게 dft라는 데이터프레임을 만들어서 outer join을 시행하였는데요.
이때 비교값으로는 on을 통해서 url을 설정했습니다.
먼저 pd.merge를 통해 두개를 합치고, outer join을 통해 모든 값을 가져옵니다.
그리고 이때 _merge라는 필드에 both,right_only, left_only가 뜨는데요.
이 중에서 원하는 값인 left_only or Right_only를 선택하고,
마지막으로 iloc을 통해서 중복된 값을 삭제할 수도 있습니다.
dft = pd.merge(df1, df2, how='outer', on='url' , indicator = True)
df_q = dft.query('_merge == "left_only"')
df_l = df_q.iloc[:, :26]
이를 통해서 원하는 값을 얻어낼 수 있습니다.
pd.merge(df1, df2, how='outer', indicator = True).query('_merge == "left_only"').drop(columns=['_merge']))
https://towardsdatascience.com/how-to-merge-pandas-dataframes-221e49c41bec
감사합니다.