[코딩테스트]/[Pandas]

[LeetCode - Pandas] (Easy) 511. Game Play Analysis I

잰잰' 2025. 5. 5. 13:21

 

Table: Activity

+--------------+---------+
| Column Name  | Type    |
+--------------+---------+
| player_id    | int     |
| device_id    | int     |
| event_date   | date    |
| games_played | int     |
+--------------+---------+

(player_id, event_date)는 이 테이블의 기본 키(고유한 값을 가지는 열의 조합)입니다.
이 테이블은 일부 게임의 플레이어 활동을 보여줍니다.
각 행은 플레이어가 로그인하고 특정 장치를 사용하여 그날 게임을 몇 번 했는지(0번일 수도 있음) 후 로그아웃한 기록을 나타냅니다.

 

문제

각 플레이어의 첫 번째 로그인 날짜를 찾는 해결책을 작성하십시오.

결과 테이블은 아무 순서로 반환해도 됩니다.

결과 형식은 다음 예시와 같습니다.

Example 1:

Input: 
Activity table:
+-----------+-----------+------------+--------------+
| player_id | device_id | event_date | games_played |
+-----------+-----------+------------+--------------+
| 1         | 2         | 2016-03-01 | 5            |
| 1         | 2         | 2016-05-02 | 6            |
| 2         | 3         | 2017-06-25 | 1            |
| 3         | 1         | 2016-03-02 | 0            |
| 3         | 4         | 2018-07-03 | 5            |
+-----------+-----------+------------+--------------+
Output: 
+-----------+-------------+
| player_id | first_login |
+-----------+-------------+
| 1         | 2016-03-01  |
| 2         | 2017-06-25  |
| 3         | 2016-03-02  |
+-----------+-------------+

 

풀이

import pandas as pd

def game_analysis(activity: pd.DataFrame) -> pd.DataFrame:
    result = activity.groupby('player_id')['event_date'].min().reset_index(name='first_login')

    return result

playr_id 별 첫 로그인 날짜를 찾기 위해 event_date의 min()을 구함