열 이름별 판다 데이터 프레임 가입
다음과 같은 열 이름을 가진 두 개의 데이터 프레임이 있습니다.
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')
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')
또한 두 번째 프레임에 새 열이 하나만 있는 경우(예:state
OP에서와 같이, 당신은 그 열을 매핑할 수 있습니다.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)
한 가지 좋은 점은join
즉, 인덱스에서 여러 데이터 프레임을 결합하려면 데이터 프레임 목록을 전달하고 효율적으로 결합할 수 있습니다(여러 개의 연결된 데이터 프레임 대신).merge
통화).
joined_frame = frame_1.join([frame_2, frame_3])
언급URL : https://stackoverflow.com/questions/20375561/joining-pandas-dataframes-by-column-names
'programing' 카테고리의 다른 글
Mobile Safari에서 뷰포트 확대/축소를 비활성화하려면 어떻게 해야 합니까? (0) | 2023.05.03 |
---|---|
Bash에서 백 틱에 해당하는 cmd/PowerShell은 얼마입니까? (0) | 2023.05.03 |
SQL: 타임스탬프 날짜에서 1일 빼기 (0) | 2023.05.03 |
몽구스에서 "LIKE" 연산자를 사용하려면 어떻게 해야 합니까? (0) | 2023.05.03 |
스위프트에서 초기화 중에 didSet을 호출할 수 있습니까? (0) | 2023.04.28 |