Pandas: 여러 열의 값을 하나로 병합하는 방법


다음 방법을 사용하여 Pandas DataFrame의 여러 열에 있는 값을 단일 열로 그룹화할 수 있습니다.

방법 1: 기본 열 순서로 값 병합

 df[' coalesce '] = df. bfill (axis= 1 ). iloc [:, 0]

방법 2: 특정 열 순서를 사용하여 값 병합

 df[' coalesce '] = df[[' col3 ', ' col1 ', ' col2 ']]. bfill (axis= 1 ). iloc [:, 0]

다음 예에서는 다음 pandas DataFrame에서 실제로 각 메서드를 사용하는 방법을 보여줍니다.

 import pandas as pd
import numpy as np

#createDataFrame
df = pd. DataFrame ({' points ': [np.nan, np.nan, 19, np.nan, 14],
                   ' assists ': [np.nan, 7, 7, 9, np.nan],
                   ' rebounds ': [3, 4, np.nan, np.nan, 6]})

#view DataFrame
print (df)

   points assists rebounds
0 NaN NaN 3.0
1 NaN 7.0 4.0
2 19.0 7.0 NaN
3 NaN 9.0 NaN
4 14.0 NaN 6.0

방법 1: 기본 열 순서로 값 병합

다음 코드는 세 개의 열에서 0이 아닌 첫 번째 값을 병합된 값으로 사용하여 포인트, 어시스트, 리바운드 열의 값을 단일 열로 병합하는 방법을 보여줍니다.

 #create new column that contains first non-null value from three existing columns 
df[' coalesce '] = df. bfill (axis= 1 ). iloc [:, 0]

#view updated DataFrame
print (df)

   points assists rebounds coalesce
0 NaN NaN 3.0 3.0
1 NaN 7.0 4.0 7.0
2 19.0 7.0 NaN 19.0
3 NaN 9.0 NaN 9.0
4 14.0 NaN 6.0 14.0

병합 열의 값이 선택된 방법은 다음과 같습니다.

  • 첫 번째 줄: 0이 아닌 첫 번째 값은 3.0 입니다.
  • 두 번째 줄: 0이 아닌 첫 번째 값은 7.0 입니다.
  • 세 번째 줄: 0이 아닌 첫 번째 값은 19.0 입니다.
  • 네 번째 줄: 0이 아닌 첫 번째 값은 9.0 입니다.
  • 다섯 번째 줄: 0이 아닌 첫 번째 값은 14.0 입니다.

방법 2: 특정 열 순서를 사용하여 값 병합

다음 코드는 어시스트, 리바운드, 포인트 순서로 열을 분석하여 세 열의 값을 병합하는 방법을 보여줍니다.

 #coalesce values in specific column order
df[' coalesce '] = df[[' assists ', ' rebounds ', ' points ']]. bfill (axis= 1 ). iloc [:, 0]

#view updated DataFrame
print (df)

   points assists rebounds coalesce
0 NaN NaN 3.0 3.0
1 NaN 7.0 4.0 7.0
2 19.0 7.0 NaN 7.0
3 NaN 9.0 NaN 9.0
4 14.0 NaN 6.0 6.0

병합 열에 배치할 값을 결정하는 데 사용된 논리는 다음과 같습니다.

  • 도우미 열의 값이 0이 아닌 경우 해당 값을 사용합니다.
  • 그렇지 않고 반송 열의 값이 0이 아닌 경우 해당 값을 사용합니다.
  • 그렇지 않고 포인트 열의 값이 0이 아닌 경우 해당 값을 사용합니다.

참고 : 여기에서 bfill() 함수에 대한 전체 문서를 찾을 수 있습니다.

추가 리소스

다음 튜토리얼에서는 Pandas에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.

Pandas에서 두 열을 결합하는 방법
Pandas에서 특정 열을 합산하는 방법
Pandas에서 여러 열을 기준으로 정렬하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다