Table: Person
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| id | int |
| email | varchar |
+-------------+---------+
id는 이 테이블의 기본 키(고유 값이 있는 열)입니다. 이 테이블의 각 행에는 이메일이 포함되어 있습니다. 이메일에는 대문자가 포함되지 않습니다.
문제
모든 중복 이메일을 삭제하고, 가장 작은 id를 가진 고유 이메일만 남기도록 해결책을 작성하세요.
SQL 사용자는 SELECT가 아닌 DELETE 문을 작성해야 한다는 점을 유의하세요.
Pandas 사용자는 Person을 제자리에서 수정해야 한다는 점을 유의하세요.
스크립트를 실행한 후, 답은 Person 테이블로 표시됩니다. 드라이버는 먼저 코드를 컴파일하고 실행한 후 Person 테이블을 표시합니다. Person 테이블의 최종 순서는 중요하지 않습니다.
결과 형식은 아래 예시와 같습니다.
Example 1:
Input:
Person table:
+----+------------------+
| id | email |
+----+------------------+
| 1 | john@example.com |
| 2 | bob@example.com |
| 3 | john@example.com |
+----+------------------+
Output:
+----+------------------+
| id | email |
+----+------------------+
| 1 | john@example.com |
| 2 | bob@example.com |
+----+------------------+
설명 : john@example.com이 두 번 반복됩니다. 우리는 가장 작은 Id = 1인 행을 유지합니다.
✏️ 풀이
import pandas as pd
def delete_duplicate_emails(person: pd.DataFrame) -> None:
person.sort_values(by='id', ascending=True, inplace=True)
person.drop_duplicates(subset='email', keep='first', inplace=True)
1. id별 오름차순 정렬
2. 중복 제거, 중복 데이터가 있을 시에 첫번째 데이터를 남기고 제거
'[코딩테스트] > [Pandas]' 카테고리의 다른 글
[LeetCode - Pandas] (Easy) 182. Duplicate Emails (0) | 2025.05.08 |
---|---|
[LeetCode - Pandas) (Easy) 183. Customers Who Never Order (0) | 2025.05.08 |
[LeetCode - Pandas] (Easy) 197. Rising Temperature (0) | 2025.05.05 |
[LeetCode - Pandas] (Easy) 511. Game Play Analysis I (0) | 2025.05.05 |
[LeetCode - Pandas] (Easy) 577. Employee Bonus (0) | 2025.05.02 |