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에서 여러 열을 기준으로 정렬하는 방법