아미(아름다운미소)

컬럼 유무 및 NaN 검사를 고려한 안전한 최대값 추출 본문

랭귀지/pandas

컬럼 유무 및 NaN 검사를 고려한 안전한 최대값 추출

유키공 2025. 7. 26. 06:36
df1 = df.groupby(by=['a'], as_index=False).max()  # 또는 다른 집계 함수
df['a'] = np.nan if df1['a'].isnull().any() else df1['a'].max()
# 컬럼 'a'가 있고, NaN이 아닌 값이 하나라도 있으면 최대값, 아니면 np.nan
df['a'] = df1['a'].max() if 'a' in df1.columns and df1['a'].notna().any() else np.nan

🎯 EX)

import pandas as pd
import numpy as np

# 예제 1: 'a' 컬럼이 있고, NaN이 아닌 값이 존재하는 경우
df1 = pd.DataFrame({'a': [3, 7, np.nan]})
df = pd.DataFrame(index=range(3))  # 결과를 저장할 df (빈 3행짜리)

# 적용
df['a'] = df1['a'].max() if 'a' in df1.columns and df1['a'].notna().any() else np.nan
print("예제 1 결과:\n", df)

# 예제 2: 'a' 컬럼이 있지만 모든 값이 NaN인 경우
df1 = pd.DataFrame({'a': [np.nan, np.nan]})
df = pd.DataFrame(index=range(3))

df['a'] = df1['a'].max() if 'a' in df1.columns and df1['a'].notna().any() else np.nan
print("\n예제 2 결과:\n", df)

# 예제 3: 'a' 컬럼이 존재하지 않는 경우
df1 = pd.DataFrame({'b': [1, 2, 3]})
df = pd.DataFrame(index=range(3))

df['a'] = df1['a'].max() if 'a' in df1.columns and df1['a'].notna().any() else np.nan
print("\n예제 3 결과:\n", df)

'랭귀지 > pandas' 카테고리의 다른 글

그룹별 최신 유효값으로 결측값 채우기  (2) 2025.07.31
dataframe 타입지정  (1) 2025.07.30
전체에 null이 하나라도 있으면 np.nan, 아니면 최대값  (1) 2025.07.25
길이 불일치  (0) 2025.07.25
카테고리타입  (1) 2025.07.25
Comments