아미(아름다운미소)

df a,b컬럼에을 groupby했을때 c가 모두 false일때 해당그룹의 d 알파벳이 가장빠른행에 c값을 true로 바꿔준다 본문

랭귀지/pandas

df a,b컬럼에을 groupby했을때 c가 모두 false일때 해당그룹의 d 알파벳이 가장빠른행에 c값을 true로 바꿔준다

유키공 2024. 8. 16. 08:14
import pandas as pd

# 예시 데이터프레임 생성
data = {
    'a': ['A', 'A', 'B', 'B', 'C'],
    'b': [1, 1, 2, 2, 1],
    'c': [False, False, False, False, True],
    'd': ['z', 'y', 'x', 'w', 'v']
}
df = pd.DataFrame(data)

# c가 모두 False인 그룹 찾기
grouped = df.groupby(['a', 'b'])

# c의 값이 모두 False인 그룹에 대한 마스크 생성
mask = grouped['c'].transform('all') == False

# 해당 그룹에서 d 컬럼 기준으로 정렬 후 인덱스 찾기
first_alpha_index = df[mask].sort_values(by='d').groupby(['a', 'b']).head(1).index

# c 값을 True로 변경
df.loc[first_alpha_index, 'c'] = True

print(df)
Comments