Table: Customers
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| id | int |
| name | varchar |
+-------------+---------+
이 테이블에서 id는 기본 키(고유 값이 있는 열)입니다.
이 테이블의 각 행은 고객의 ID와 이름을 나타냅니다.
Table: Orders
+-------------+------+
| Column Name | Type |
+-------------+------+
| id | int |
| customerId | int |
+-------------+------+
이 테이블에서 id는 기본 키(고유 값이 있는 열)입니다.
customerId는 Customers 테이블의 id를 참조하는 외래 키(참조 열)입니다.
이 테이블의 각 행은 주문의 ID와 해당 주문을 한 고객의 ID를 나타냅니다.'
문제
아무 것도 주문하지 않은 모든 고객을 찾는 해결책을 작성하십시오.
결과 테이블은 임의의 순서로 반환될 수 있습니다.
결과 형식은 아래 예시와 같습니다.
Example 1:
Input:
Customers table:
+----+-------+
| id | name |
+----+-------+
| 1 | Joe |
| 2 | Henry |
| 3 | Sam |
| 4 | Max |
+----+-------+
Orders table:
+----+------------+
| id | customerId |
+----+------------+
| 1 | 3 |
| 2 | 1 |
+----+------------+
Output:
+-----------+
| Customers |
+-----------+
| Henry |
| Max |
+-----------+
✏️ 풀이
import pandas as pd
def find_customers(customers: pd.DataFrame, orders: pd.DataFrame) -> pd.DataFrame:
df = pd.merge(customers, orders, how='left', left_on = 'id', right_on = 'customerId').rename(columns={'name' : 'Customers'})
return df[df.customerId.isna()][['Customers']]
1. customers 데이터 프레임 기준으로 orders 데이터 프레임 left join
2. orders의 customerId가 Null인 데이터 조회
'[코딩테스트] > [Pandas]' 카테고리의 다른 글
[LeetCode - Pandas] (Easy) 181. Employees Earning More Than Their Managers (0) | 2025.05.09 |
---|---|
[LeetCode - Pandas] (Easy) 182. Duplicate Emails (0) | 2025.05.08 |
[LeetCode - Pandas] (Easy) 196. Delete Duplicate Emails (0) | 2025.05.06 |
[LeetCode - Pandas] (Easy) 197. Rising Temperature (0) | 2025.05.05 |
[LeetCode - Pandas] (Easy) 511. Game Play Analysis I (0) | 2025.05.05 |