Table: Employee
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| empId | int |
| name | varchar |
| supervisor | int |
| salary | int |
+-------------+---------+
empId는 이 테이블의 고유 값이 있는 열입니다. 이 테이블의 각 행은 직원의 이름과 ID, 급여, 그리고 관리자 ID를 나타냅니다.
Table: Bonus
+-------------+------+
| Column Name | Type |
+-------------+------+
| empId | int |
| bonus | int |
+-------------+------+
empId는 이 테이블의 고유 값이 있는 열입니다.
empId는 Employee 테이블의 empId를 참조하는 외래 키(참조 열)입니다.
이 테이블의 각 행은 직원의 ID와 해당 직원의 보너스를 포함합니다.
문제
각 직원의 보너스가 1000 미만인 직원의 이름과 보너스 금액을 보고하는 솔루션을 작성하세요.
결과 테이블은 아무 순서로 반환할 수 있습니다.
결과 형식은 아래 예시와 같습니다.
Example 1:
Input:
Employee table:
+-------+--------+------------+--------+
| empId | name | supervisor | salary |
+-------+--------+------------+--------+
| 3 | Brad | null | 4000 |
| 1 | John | 3 | 1000 |
| 2 | Dan | 3 | 2000 |
| 4 | Thomas | 3 | 4000 |
+-------+--------+------------+--------+
Bonus table:
+-------+-------+
| empId | bonus |
+-------+-------+
| 2 | 500 |
| 4 | 2000 |
+-------+-------+
Output:
+------+-------+
| name | bonus |
+------+-------+
| Brad | null |
| John | null |
| Dan | 500 |
+------+-------+
✏️ 풀이
import pandas as pd
def employee_bonus(employee: pd.DataFrame, bonus: pd.DataFrame) -> pd.DataFrame:
df = pd.merge(employee, bonus, how='left', on='empId')
return df[(df['bonus'] < 1000) | (df['bonus'].isna())][['name', 'bonus']]
1. employee, bonus 두 데이터프레임 merge
2. 보너스가 1000미만 이거나 없는(null) 직원 조회
'[코딩테스트] > [Pandas]' 카테고리의 다른 글
[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) 584. Find Customer Referee (0) | 2025.04.30 |
[LeetCode - Pandas] (Easy) 586. Customer Placing the Largest Number of Orders (0) | 2025.04.30 |
[LeetCode - Pandas] (Easy) 595. Big Countries (0) | 2025.04.29 |