-
판다스 두 DataFrame 에서의 동일여부, 다른부분(차이점) 찾기프로그래밍/Python 2021. 1. 25. 00:41반응형
예제로 사용할 df(DataFrame) 정보
: 'location' column(열)의 1번항목이 다름('인천' / '강릉')
df1 = pd.DataFrame({ 'location': ['부산', '인천', '청주', '부산', '광주', '서울'], 'fruits': ['apple', 'orange', 'banana', 'celery', 'apple', 'banana'], 'price': [100, 100, 200, 300, 200, 200], 'color': ['Red', 'Orange', 'Yellow', 'Green', 'Red', 'Yellow'] }) df2 = pd.DataFrame({ 'location': ['부산', '강릉', '청주', '부산', '광주', '서울'], 'fruits': ['apple', 'orange', 'banana', 'celery', 'apple', 'banana'], 'price': [100, 100, 200, 300, 200, 200], 'color': ['Red', 'Orange', 'Yellow', 'Green', 'Red', 'Yellow'] })
동일여부 판단 : df1.equals(df2) 사용
⇒ df.equals()함수의 반환값 : bool (True / False)
(이 equals함수는 series에도 적용가능하다
예시 :series1.equals(series2))
다른부분 찾기(두 df의 다른부분으로 이루어진 dataframe 반환)
def GetDifferences(df1, df2): df = pd.concat([df1, df2]).reset_index(drop=True) idx = [diff[0] for diff in df.groupby(list(df.columns)).groups.values() if len(diff) == 1] return df.reindex(idx)
코드 설명
-
pd.concat( [df1, df2])
: 두 dataframe 합치기
결과
-
df.reset_index(drop=True)
drop=True : 기존 index 없애기
: index 초기화(0~) / drop=True
결과
drop=False
결과 -
idx = [diff[0] for diff in df.groupby(list(df.columns)).groups.values() if len(diff) == 1]
-
df.groupby( [column1, ...] ).gruop
: list [] 안, 인자로 주어진 column들의 values들로 만들어질 수 있는 모든 경우를 구하고, 그 경우에 해당하는 row의 index를 dictionary 형태로 반환함
결과
-
idx = [diff[0] for diff in df.groupby(list(df.columns)).groups.values() if len(diff) == 1]
: dictionary 의 value를 사용
→ value의 길이가 1, 즉 해당 data를 가지고 있는 row가 1개 밖에 없을 때,
해당 row의 index를 반환결과
-
-
df.reindex(idx)
: df에서, index고 idx인 row를 추출함.
(df.reindex()는 df에 직접 영향주지않고, 새로운 dataframe을 반환한다)
결과
참고 : https://stackoverflow.com/questions/20225110/comparing-two-dataframes-and-getting-the-differences
반응형'프로그래밍 > Python' 카테고리의 다른 글
Python dictionary : 다양한 조건으로 dictionary 값 찾기 (0) 2021.02.02 Python - 현재 시간을 파일이름(파일명)으로 사용하기(datetime) (0) 2021.01.27 Python - ','구분 없는 리스트 형태의 문자열을 리스트로 바꾸기(str -> list)(str에 저장되어있는 list를 list로 바꾸기) (0) 2021.01.03 python pynput모듈의 사용을 통한 마우스/키보드 제어 (0) 2020.12.01 pyautogui 메세지 출력 (0) 2020.11.30 -