아미(아름다운미소)

Pandas에서 DataFrame의 특정 컬럼 특정값 본문

랭귀지/pandas

Pandas에서 DataFrame의 특정 컬럼 특정값

유키공 2024. 7. 31. 09:02
import pandas as pd
import numpy as np

# 예시 데이터 생성
data = {
    'a': ['x', 'x', 'y', 'y', 'z'],
    'b': ['p', 'p', 'q', 'q', 'r'],
    'c': ['apple', 'banana', 'cherry', 'date', 'fig']
}

df = pd.DataFrame(data)

# (a, b)로 그룹화하여 c 컬럼의 최소값을 계산
min_c = df.groupby(['a', 'b'])['c'].agg('min').reset_index()
min_c.rename(columns={'c': 'min_c'}, inplace=True)

# 원래 DataFrame과 병합
df = df.merge(min_c, on=['a', 'b'], how='left')

# 최소값에 1을 할당하고 나머지에는 NaN 할당
df['value'] = np.where(df['c'] == df['min_c'], 1, np.nan)

# 필요 없는 min_c 컬럼 제거
df.drop(columns=['min_c'], inplace=True)

print(df)
import pandas as pd
import numpy as np

# 예시 데이터 생성
data = {
    'a': ['x', 'x', 'y', 'y', 'z'],
    'b': ['p', 'p', 'q', 'q', 'r'],
    'c': ['apple', 'banana', 'cherry', 'date', 'fig']
}

df = pd.DataFrame(data)

# (a, b)로 그룹화하고 c 컬럼의 알파벳 순으로 정렬한 후, 최소값을 찾기
# 각 그룹의 최소값을 가져오기 위해 groupby 후 transform 사용
df['min_c'] = df.groupby(['a', 'b'])['c'].transform(lambda x: x.min())

# 최소값에 1을 할당하고 나머지에는 NaN 할당
df['value'] = np.where(df['c'] == df['min_c'], 1, np.nan)

# 필요 없는 min_c 컬럼 제거
df.drop(columns=['min_c'], inplace=True)

print(df)
Comments