코딩 테스트/Pandas

Monthly Transactions I

susinlee 2024. 12. 30. 09:53

[문제] 

https://leetcode.com/problems/monthly-transactions-i/description/

 

[풀이]

1. state 컬럼이 'approved' 인 행에만 집계함수를 적용할 수 있도록 np.where 또는 apply 함수를 통해 새로운 컬럼을 생성

2.  month 컬럼을 요구된 날짜포맷으로 변경

3. month 컬럼과 country 컬럼으로 groupby 를 진행하는데 기준 컬럼이 null값 이어도 그룹화에서 제외하지 않도록dropna=False 설정

4. agg 함수를 적용하고 reset_index 함수로 마무리

 

Pandas

def monthly_transactions(transactions: pd.DataFrame) -> pd.DataFrame:
    transactions['approved'] = np.where(transactions['state']=='approved', transactions['amount'], np.nan)
    transactions['month'] = transactions['trans_date'].dt.strftime("%Y-%m")

    return transactions.groupby(['month', 'country'], dropna=False).agg(
        trans_count=('state','count')
        , approved_count=('approved','count')
        , trans_total_amount=('amount','sum')
        , approved_total_amount=('approved','sum')
    ).reset_index()

 

SQL

SELECT 
    DATE_FORMAT(trans_date, '%Y-%m') as month
    , country
    , COUNT(trans_date) AS trans_count
    , SUM(IF(state='approved', 1, 0)) AS approved_count
    , SUM(amount) AS trans_total_amount
    , SUM(IF(state='approved', amount, 0)) AS approved_total_amount
FROM Transactions
GROUP BY 1, 2

'코딩 테스트 > Pandas' 카테고리의 다른 글

Game Play Analysis IV  (0) 2025.01.01
Immediate Food Delivery II  (0) 2024.12.31
Queries Quality and Percentage  (1) 2024.12.27
Percentage of Users Attended a Contest  (0) 2024.12.26
Project Employees I  (0) 2024.12.26