일치하는 열을 기반으로 누락된 값을 추가하기 위해 데이터프레임을 병합하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-10-29 12:50:29
원래의
265명이 탐색했습니다.

How to merge dataframes to append missing values based on a matching column?

일치하는 열을 기반으로 누락된 값을 추가하기 위해 DataFrame 병합

주어진 시나리오에서 목표는 두 개의 데이터 프레임 df1과 df1을 병합하는 것입니다. 이름 열을 기반으로 하는 df2. 그러나 원하는 출력은 df1의 정보를 유지하고 df2의 누락된 값을 NaN으로 채우는 것입니다. 결과는 다음과 같습니다.

    Name  Age  Sex
0    Tom   34    M
1   Sara   18  NaN
2    Eva   44    F
3   Jack   27    M
4  Laura   30  NaN
로그인 후 복사

방법 1: Set_index에 의해 생성된 Series별 맵 사용

이 접근 방식에는 Name 열을 설정하여 df2에서 Series를 생성하는 작업이 포함됩니다. 지수로. 그런 다음 map() 메서드를 사용하여 df1의 Sex 값을 일치시키고 채웁니다.

<code class="python">df1['Sex'] = df1['Name'].map(df2.set_index('Name')['Sex'])

print(df1)</code>
로그인 후 복사

방법 2: Left Join을 사용하여 병합하는 대체 솔루션

An 대체 솔루션은 왼쪽 조인 접근 방식을 사용하여 df1과 df2를 병합하는 것입니다. 이렇게 하면 df1의 모든 행이 보존되고 df2의 누락된 값이 NaN으로 채워집니다.

<code class="python">df = df1.merge(df2[['Name', 'Sex']], on='Name', how='left')

print(df)</code>
로그인 후 복사

방법 3: 왼쪽 조인과 병합을 사용하여 여러 열로 매핑

병합에 여러 열이 필요한 경우(예: 이름, 연도, 코드) 왼쪽 조인을 사용한 병합을 사용하여 원하는 열을 지정합니다.

<code class="python"># Merge by all columns
df = df1.merge(df2, on=['Year', 'Code'], how='left')

# Merge by specified columns
df = df1.merge(df2[['Year', 'Code', 'Val']], on=['Year', 'Code'], how='left')</code>
로그인 후 복사

중복 키로 오류 처리

경우에 따라 이름 값이 중복되어 오류가 발생할 수 있습니다. 이 문제를 해결하려면 중복 항목을 제거하거나 사전 기반 매핑을 사용하여 마지막으로 일치하는 값이 선택되도록 하는 것이 좋습니다.

<code class="python"># Remove duplicates and create a Series for mapping
s = df2.drop_duplicates('Name').set_index('Name')['Val']
df1['New'] = df1['Name'].map(s)</code>
로그인 후 복사

이러한 방법 중 하나를 사용하면 데이터 프레임을 효과적으로 병합하여 기본 프레임의 정보를 보존할 수 있습니다. 데이터프레임을 실행하고 누락된 값을 NaN으로 채웁니다.

위 내용은 일치하는 열을 기반으로 누락된 값을 추가하기 위해 데이터프레임을 병합하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿