pandas 에서 DataFrame 데이터 통합 연결(merge,join,concat)
글 에서 코드 블록 은 주로 pandas 홈 페이지 튜 토리 얼 이 제공 합 니 다.
1 concat
concat 함 수 는 pandas 아래 의 방법 으로 데 이 터 를 서로 다른 축 에 따라 간단하게 융합 시 킬 수 있 습 니 다.
pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
keys=None, levels=None, names=None, verify_integrity=False)
매개 변수 설명 objects:series,dataframe 또는 panel 로 구 성 된 시퀀스 lsit
axis:링크 를 합 쳐 야 하 는 축,0 은 줄,1 은 열 입 니 다.
join:연결 방식 inner 또는 outer
다른 일부 매개 변 수 는 자주 사용 되 지 않 으 므 로 사용 할 때 다시 설명 을 보충 합 니 다.
1.1 같은 필드 의 표 의 앞 뒤 가 서로 연결 되 어 있다.
# list, concat
In [4]: frames = [df1, df2, df3]
In [5]: result = pd.concat(frames)
연결 할 때 하나의 차원 의 key 를 더 해서 데이터 가 어느 표 에서 기원 되 었 는 지 식별 하려 면 key 파 라 메 터 를 추가 할 수 있 습 니 다.
In [6]: result = pd.concat(frames, keys=['x', 'y', 'z'])
효 과 는 다음 과 같다.1.2 가로 표 조합(줄 정렬)
1.2.1 axis
axis=1 일 때,concat 는 줄 을 정렬 한 다음,서로 다른 열 이름 의 두 장의 표를 합 친다
In [9]: result = pd.concat([df1, df4], axis=1)
1.2.2 join
join 매개 변수의 속성 을 더 하면'inner'를 위해 두 표 의 교 집합 을 얻 을 수 있 고 outer 라면 두 표 의 집합 을 얻 을 수 있 습 니 다.
In [10]: result = pd.concat([df1, df4], axis=1, join='inner')
1.2.3 join_axes
하면,만약,만약...axes 의 인자 가 들 어 오 면 그 축 에 따라 데 이 터 를 정렬 할 수 있 습 니 다.
예 를 들 어 df1 표 에 따라 데 이 터 를 정렬 하면 지정 한 df1 표 의 축 을 유지 하고 df4 의 시 계 를 연결 합 니 다.
In [11]: result = pd.concat([df1, df4], axis=1, join_axes=[df1.index])
1.31.3 append
append 는 series 와 dataframe 의 방법 입 니 다.이 방법 을 사용 하면 기본적으로 열 을 따라 진행 합 니 다(axis=0,열 정렬).
In [12]: result = df1.append(df2)
1.4 index 를 무시 한 concat
두 표 의 index 가 모두 실제 의미 가 없다 면 ignore 를 사용 하 십시오.index 매개 변 수 는 true 를 설정 하고 합 친 두 시 계 는 열 필드 에 따라 정렬 한 다음 에 합 친다.마지막 으로 새로운 index 를 다시 정리 합 니 다.
1.5 합병 과 동시에 데이터 그룹 을 구분 하 는 키 를 추가 합 니 다.
앞에서 언급 한 keys 인 자 는 합 친 표 에 key 를 추가 하여 서로 다른 표 데이터 출처 를 구분 할 수 있 습 니 다.
1.5.1 key 매개 변수 로 직접 실현 할 수 있 습 니 다.
In [27]: result = pd.concat(frames, keys=['x', 'y', 'z'])
1.5.2 그룹 키 를 추가 하기 위해 사전 을 입력 합 니 다.
In [28]: pieces = {'x': df1, 'y': df2, 'z': df3}
In [29]: result = pd.concat(pieces)
1.6 dataframe 에 새 줄 추가
append 방법 은 series 와 사전 으로 충분 한 데 이 터 를 dataframe 의 새로운 줄 로 삽입 할 수 있 습 니 다.
In [34]: s2 = pd.Series(['X0', 'X1', 'X2', 'X3'], index=['A', 'B', 'C', 'D'])
In [35]: result = df1.append(s2, ignore_index=True)
표 열 필드 의 다른 표 병합두 장의 표 의 열 필드 를 만나면 원래 다 르 지만 두 개의 표를 합 치 려 고 합 니 다.그 중 잘못된 값 은 nan 으로 표시 합 니 다.그럼 ignore 를 사용 할 수 있 습 니 다.index 로 구현.
1
In [36]: dicts = [{'A': 1, 'B': 2, 'C': 3, 'X': 4},
....: {'A': 5, 'B': 6, 'C': 7, 'Y': 8}]
....:
In [37]: result = df1.append(dicts, ignore_index=True)
이 어 pandas 에서 도 자주 사용 되 는 join 과 merge 방법 을 소개 한다.merge
pandas 의 merge 방법 은 SQL 과 유사 한 메모리 링크 작업 을 제공 합 니 다.홈 페이지 문 서 는 다른 오픈 소스 언어의 데이터 조작(예 를 들 어 R)보다 성능 이 효율 적 이 라 고 언급 했 습 니 다.
SQL 문장 과 비교 하면 볼 수 있 습 니 다여기,이곳
merge 의 인자
on:열 이름,join 이 정렬 하 는 열 이름 입 니 다.이 매개 변 수 를 사용 할 때 왼쪽 표 와 오른쪽 표 가 정렬 하 는 열 에 똑 같은 열 이름 이 있 도록 해 야 합 니 다.
left_on:왼쪽 표 가 정렬 된 열 은 열 이름 일 수도 있 고 dataframe 과 같은 길이 의 arrays 일 수도 있 습 니 다.
right_on:오른쪽 표 가 정렬 된 열 은 열 이름 일 수도 있 고 dataframe 과 같은 길이 의 arrays 일 수도 있 습 니 다.
left_index/ right_index:True 의 haunted 라면 index 를 정렬 한 key 입 니 다.
how:데이터 융합 방법.
sort:dataframe 에 합 쳐 진 keys 는 사전 순서대로 정렬 합 니 다.기본 값 은 false 를 설정 하면 표현 을 향상 시 킬 수 있 습 니 다.
merge 의 기본 병합 방법:
merge 는 표 내부 에서 index-on-index 와 index-on-column(s)의 합병 을 기반 으로 하지만 기본 값 은 index 를 기반 으로 합 쳐 집 니 다.
1.1 복합 키 의 합병 방법
merge 를 사용 할 때 여러 개의 key 를 복합 으로 선택 하여 병합 을 정렬 할 수 있 습 니 다.
1.1.1 on 을 통 해 지정 한 데 이 터 를 합 쳐 정렬 한 열
In [41]: left = pd.DataFrame({'key1': ['K0', 'K0', 'K1', 'K2'],
....: 'key2': ['K0', 'K1', 'K0', 'K1'],
....: 'A': ['A0', 'A1', 'A2', 'A3'],
....: 'B': ['B0', 'B1', 'B2', 'B3']})
....:
In [42]: right = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'],
....: 'key2': ['K0', 'K0', 'K0', 'K0'],
....: 'C': ['C0', 'C1', 'C2', 'C3'],
....: 'D': ['D0', 'D1', 'D2', 'D3']})
....:
In [43]: result = pd.merge(left, right, on=['key1', 'key2'])
how 가 지정 되 지 않 으 면 기본적으로 inner 방법 을 사용 합 니 다.
how 의 방법 은 다음 과 같다.
left
왼쪽 표 의 모든 데이터 만 저장 합 니 다.
In [44]: result = pd.merge(left, right, how='left', on=['key1', 'key2'])
right
오른쪽 표 의 모든 데이터 만 유지 합 니 다.
In [45]: result = pd.merge(left, right, how='right', on=['key1', 'key2'])
outer
두 표 의 모든 정 보 를 저장 합 니 다.
In [46]: result = pd.merge(left, right, how='outer', on=['key1', 'key2'])
inner
두 표 의 공공 부분 만 유지 합 니 다.
In [47]: result = pd.merge(left, right, how='inner', on=['key1', 'key2'])
1.2 indicator
v 0.17.0 버 전의 pandas 는 처음에 indicator 의 인 자 를 지원 합 니 다.True 를 설치 할 때 출력 결 과 는 열 이 증가 합 니 다.'merge'。_merge 열 은 세 개의 값 을 얻 을 수 있 습 니 다.
dataframe 에 내 장 된 join 방법 은 빠 른 합병 방법 입 니 다.이것 은 기본적으로 index 를 정렬 한 열 로 합 니 다.
1.3.1 매개 변수
join 의 how 매개 변 수 는 merge 의 how 매개 변수 와 마찬가지 로 표 통합 보존 데 이 터 를 지정 하 는 규칙 입 니 다.
구체 적 으로 앞의 how 설명 을 볼 수 있다.
1.3.2 매개 변수
실제 응용 에서 오른쪽 표 의 색인 값 이 왼쪽 표 의 한 열 값 이 라면 오른쪽 표 의 색인 과 왼쪽 표 의 열 을 정렬 하여 합 치 는 유연 한 방식 으로 합 칠 수 있 습 니 다.
ex 1
In [59]: left = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
....: 'B': ['B0', 'B1', 'B2', 'B3'],
....: 'key': ['K0', 'K1', 'K0', 'K1']})
....:
In [60]: right = pd.DataFrame({'C': ['C0', 'C1'],
....: 'D': ['D0', 'D1']},
....: index=['K0', 'K1'])
....:
In [61]: result = left.join(right, on='key')
1.3.3 suffix 접미사 파라미터
표 와 합병 하 는 과정 에서 두 개의 표 가 같은 이름 이지 만 값 이 다 르 면 합병 할 때 모두 보존 하고 싶 으 면 suffixes 로 표 마다 중복 열 이름 에 접 두 사 를 추가 할 수 있 습 니 다.
In [79]: result = pd.merge(left, right, on='k', suffixes=['_l', '_r'])
*또한 lsuffix 와 rsuffix 는 각각 왼쪽 표 의 접미사 와 오른쪽 표 의 접 두 사 를 지정 합 니 다.
1.4 여러 dataframe 조합
한 번 에 여러 개의 dataframe 을 조합 할 때 dataframe 의 목록 이나 tuple 요 소 를 입력 할 수 있 습 니 다.한 번 에 join 여러 개,한 번 에 여러 번 고민 해결~
In [83]: right2 = pd.DataFrame({'v': [7, 8, 9]}, index=['K1', 'K1', 'K2'])
In [84]: result = left.join([right, right2])
1.5 업데이트 테이블 의 nan 값
1.5.1 combine_first
한 표 의 nan 값 이 다른 표 의 같은 위치(같은 색인 과 같은 열)에서 찾 을 수 있다 면 combine데이터 업데이트
1.5.2 update
한 장의 표 에 있 는 데이터 로 다른 표 의 데 이 터 를 업데이트 하려 면 update 로 이 루어 질 수 있 습 니 다.
1.5.3 combine_first 와 update 의 차이
combine 사용first 는 왼쪽 표 의 nan 값 만 업데이트 합 니 다.업 데 이 트 는 왼쪽 표 의 모든 오른쪽 표 에서 찾 을 수 있 는 값 을 업데이트 합 니 다(두 표 의 위치 가 대응 합 니 다).
총결산
pandas 에서 DataFrame 데이터 통합 연결(merge,join,concat)에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 pandas 에서 DataFrame 데이터 통합 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Pandas】DatetimeIndex란? no.29안녕하세요, 마유미입니다. Pandas에 대한 기사를 시리즈로 작성하고 있습니다. 이번은 제29회의 기사가 됩니다. 에서 Pandas의 시간에 대한 모듈에 대해 씁니다. 이번 기사에서는, 「DatetimeIndex」...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.