[문제]
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 |