열 이름으로 Pandas 데이터 프레임 결합


84

다음 열 이름을 가진 두 개의 데이터 프레임이 있습니다.

frame_1:
event_id, date, time, county_ID

frame_2:
countyid, state

에 조인 (왼쪽)하여 다음 열이있는 데이터 프레임을 얻고 싶습니다 county_ID = countyid.

joined_dataframe
event_id, date, time, county, state

조인하려는 열이 인덱스가 아닌 경우 수행 방법을 알 수 없습니다. 가장 쉬운 방법은 무엇입니까? 감사!

답변:


157

다음과 같이 left_on 및 right_on 옵션을 사용할 수 있습니다.

pd.merge(frame_1, frame_2, left_on='county_ID', right_on='countyid')

키가 왼손 데이터 프레임에있는 경우에만 병합 하려는지 질문에서 확실하지 않았습니다. 이 경우 다음이 수행합니다 (위의 방법은 실제로 다 대다 병합을 수행합니다).

pd.merge(frame_1, frame_2, how='left', left_on='county_ID', right_on='countyid')

1
이것을 조금 확장하려면 한쪽에 인덱스를 지정하려면을 사용할 수 있습니다 right_index=True.
Druckles 2015-09-17

1
@Woody frame_1이미 county_ID인덱스가 있고 frame_2이미 인덱스 가 있다면 countyid어떨까요? 나는 대체 할 수 있습니다 이해 frame_1.reset_index()를 위해 frame_1(및 같은 frame_2) 당신의 대답이다. 그러나 인덱스를 재설정하지 않고 결합 / 병합하는 더 효율적인 방법이 있습니까?
Zhang18

3

county_ID올바른 프레임에 대한 색인 으로 만들어야합니다 .

frame_2.join ( frame_1.set_index( [ 'county_ID' ], verify_integrity=True ),
               on=[ 'countyid' ], how='left' )

참고로 pandas에서 오른쪽 프레임의 결합 열에 고유하지 않은 값이있을 때 왼쪽 결합이 끊어집니다. 이 버그를 참조하십시오 .

따라서 가입하기 전에 무결성을 확인해야합니다. , verify_integrity=True

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.