아미(아름다운미소)

pandas df a,b,c,d groupby 후 e컬럼을 sum 한후e와 d값을 비교후 (e-d) 값을 f가 가장작은 row의 d값에 더해준다 본문

랭귀지/pandas

pandas df a,b,c,d groupby 후 e컬럼을 sum 한후e와 d값을 비교후 (e-d) 값을 f가 가장작은 row의 d값에 더해준다

유키공 2024. 8. 7. 14:30
import pandas as pd

# 예시 DataFrame 생성
data = {
    'a': ['A', 'A', 'B', 'B', 'C'],
    'b': [1, 1, 2, 2, 3],
    'c': [5, 5, 6, 6, 7],
    'd': [10, 20, 10, 30, 40],
    'e': [5, 15, 5, 25, 35]
}
df = pd.DataFrame(data)

# 그룹화하여 e 컬럼의 합계 계산
grouped = df.groupby(['a', 'b', 'c'])['e'].sum().reset_index()

# e와 d 비교 후 (e - d) 계산
grouped['d'] = df.groupby(['a', 'b', 'c'])['d'].first().values  # d 값을 가져옴
grouped['difference'] = grouped['e'] - grouped['d']

# (e - d)가 가장 작은 row 찾기
min_row = grouped.loc[grouped['difference'].idxmin()]

# 해당 row의 d 값에 수정할 값을 더하기
df.loc[df['d'] == min_row['d'], 'd'] += min_row['difference']

# 결과 출력
print(df)
Comments