인프런 커뮤니티 질문&답변
6회 1유형 3번 문제
해결된 질문
작성
·
32
·
수정됨
0
아직 method 속 수많은 attribute들에 익숙해지지 않아서 쓰는 것만 쓸려다 보니
문제가 복잡해질수록 코드를 복잡하게 작성하게 되네요.
6회 1유형 3번 문제로 예를 들자면,
같은 경우도 lambda가 먼저 떠오르지 않고 str.split로 어떻게든 해보려하고..
axis 쓰신 부분이 이해가 가지않아 transform 쓰려다 포기하고..
결국 이렇게 풀었습니다.
df['yr']=df['날짜'].apply(lambda x : x[0:4])
df['mth']=df['날짜'].apply(lambda x : x[6:8])
df['sum']=df['전자제품']+df['가전제품']+df['의류']+df['잡화']
c2018 = (df['yr']== '2018')
d2018 = df[c2018]
g2018 = d2018['sum'].sum()
d2018['gsum'] = g2018
c2019 = (df['yr']== '2019')
d2019 = df[c2019]
g2019 = d2019['sum'].sum()
d2019['gsum'] = g2019
c2020 = (df['yr']== '2020')
d2020 = df[c2020]
g2020 = d2020['sum'].sum()
d2020['gsum'] = g2020
c2021 = (df['yr']== '2021')
d2021 = df[c2021]
g2021 = d2021['sum'].sum()
d2021['gsum'] = g2021
c2022 = (df['yr']== '2022')
d2022 = df[c2022]
g2022 = d2022['sum'].sum()
d2022['gsum'] = g2022
df = pd.concat([d2018, d2019, d2020, d2021, d2022]).reset_index()
df = df.sort_values('gsum', ascending=False).reset_index()
t2021= df.loc[0, 'gsum']
a2021= t2021/12
print(int(round(a2021,0)))분명 더 쉽게 풀 수 있을 거 같은데
머리 속에는 테이블을 하나하나 분리해서 다시 조각조각 붙일 생각만 드네요.
혹시 이 문제 str.split 혹은 transform 써서 풀어주실 수 있으신가요?
강의 영상에는 대부분 가장 명료한 가지 방법으로만 풀어주시는데
몇몇 방법들은 교재와 chatgpt를 사용해도 이해가 어렵습니다.
답변 1
0
너무 잘 하신겁니다. 실제 시험때는 transform 이든 뭐든 다 생각이 안나고 내가 평상시 연습하고 확실히 알고 있는것만 생각나기 때문에 대부분의 수험생분들이 거의 노가다로 코딩해서 문제를 해결합니다.
정말 잘하신거예요.
굳이 transfrom 으로 하고 싶으시다면 다음과 같이 하시면 됩니다.
df['yr'] = df['날짜'].str[:4] # 처음 4글자만
df['sum'] = df[['전자제품', '가전제품', '의류', '잡화']].sum(axis=1)
df['gsum'] = df.groupby('yr')['sum'].transform('sum')
result = df.loc[df['gsum'].idxmax()].iloc[0]
print(int(round(result['gsum'] / 12, 0)))
그리고 transform 이 이해되기 쉬우시라고 아침에 자료를 준비햇는데 다음의 내용을 참고해보면 도움이 많이 될것 같습니다.




위의 내용은 제가 영상으로 올려드릴께요.





