programing

열 이름별 판다 데이터 프레임 가입

powerit 2023. 5. 3. 21:57
반응형

열 이름별 판다 데이터 프레임 가입

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

frame_1:
event_id, date, time, county_ID

frame_2:
countyid, state

다음 열이 있는 DataFrame을 왼쪽으로 조인하여 얻고 싶습니다.county_ID = countyid:

joined_dataframe:
event_id, date, time, county, state

내가 가입하고자 하는 열이 색인이 아니라면 어떻게 해야 할지 모르겠습니다.

사용할 수 있습니다.left_on그리고.right_on다음과 같은 PD.dll 옵션:

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

또는 DataFrame.merge와 동등한 기능:

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

왼쪽 DataFrame에 키가 있는 경우에만 병합을 원하는 것인지 질문에서 확신할 수 없었습니다.이 경우 다음과 같이 수행할 수 있습니다(위의 내용은 실제로 많은 병합에 도움이 됩니다).

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

또는

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

당신은 만들어야 합니다.county_ID오른쪽 프레임에 대한 인덱스로:

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

참고로 오른쪽 프레임에 조인 열에 고유한 값이 없을 때 판다의 왼쪽 조인 중단이 표시됩니다. 벌레를 보다.

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

다른 이름의 열을 사용하여 병합하면 열이 중복됩니다(예: 호출 후).frame_1.merge(frame_2, how='left', left_on='county_ID', right_on='countyid'),둘다요.county_ID그리고.countyid열은 결합된 프레임에 생성되지만 각 행에 대해 정확히 동일한 값을 가지므로 그 중 하나만 필요할 수 있습니다.처음부터 이 문제가 발생하지 않으려면 병합 키 열의 이름을 동일하게 변경하고 해당 열에서 병합합니다.

df1 = frame_1.rename(columns={'county_ID':'county'})
df2 = frame_2.rename(columns={'countyid':'county'})
joined_frame = df1.merge(df2, on='county', how='left')

res1

또한 두 번째 프레임에 새 열이 하나만 있는 경우(예:stateOP에서와 같이, 당신은 그 열을 매핑할 수 있습니다.frame_1공통 열을 통해.

frame_1['state'] = frame_1['county_ID'].map(frame_2.set_index('countyid')['state'])

한다면county_ID그리고.countyid인덱스(열이 아님), 직선join콜이 그 일을 합니다.기본적으로 왼쪽 조인을 수행합니다.

joined_frame = frame_1.join(frame_2)

res2

한 가지 좋은 점은join즉, 인덱스에서 여러 데이터 프레임을 결합하려면 데이터 프레임 목록을 전달하고 효율적으로 결합할 수 있습니다(여러 개의 연결된 데이터 프레임 대신).merge통화).

joined_frame = frame_1.join([frame_2, frame_3])

언급URL : https://stackoverflow.com/questions/20375561/joining-pandas-dataframes-by-column-names

반응형