[Study]/[Pandas]

[LeetCode - Pandas] (Easy) 1965. Employees With Missing Information

잰잰' 2025. 4. 6. 18:21
Table: Employees

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| employee_id | int     |
| name        | varchar |
+-------------+---------+

employee_id는 이 테이블의 고유한 값을 가진 열입니다. 이 테이블의 각 행은 employee_id에 해당하는 직원의 이름을 나타냅니다.

Table: Salaries

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| employee_id | int     |
| salary      | int     |
+-------------+---------+

employee_id는 이 테이블의 고유한 값을 가진 열입니다. 이 테이블의 각 행은 employee_id에 해당하는 직원의 급여를 나타냅니다.

 

문제

누락된 정보가 있는 모든 직원의 ID를 보고하는 솔루션을 작성하세요. 직원의 정보가 누락된 경우는 다음과 같습니다:

- 직원의 이름이 누락된 경우, 또는

- 직원의 급여가 누락된 경우.

결과 테이블은 employee_id를 오름차순으로 정렬하여 반환하세요.

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

Example 1:

Input: 
Employees table:
+-------------+----------+
| employee_id | name     |
+-------------+----------+
| 2           | Crew     |
| 4           | Haven    |
| 5           | Kristian |
+-------------+----------+
Salaries table:
+-------------+--------+
| employee_id | salary |
+-------------+--------+
| 5           | 76071  |
| 1           | 22517  |
| 4           | 63539  |
+-------------+--------+
Output: 
+-------------+
| employee_id |
+-------------+
| 1           |
| 2           |
+-------------+

설명: 직원 1, 2, 4, 5가 이 회사에서 근무하고 있습니다.

직원 1의 이름이 누락되었습니다.

직원 2의 급여가 누락되었습니다.

 

✏️ 풀이

import pandas as pd

def find_employees(employees: pd.DataFrame, salaries: pd.DataFrame) -> pd.DataFrame:
    df_merge = pd.merge(employees, salaries, how='outer', on='employee_id')

    return df_merge[df_merge['name'].isna() | df_merge['salary'].isna()][['employee_id']]

 

📚 개념정리

isna() ? 결측값 확인 메서드 / 결측값이면 True 반환, 정상값이면 False반환

notna() ? 결측값이면 False 반환, 정상값이면 True반환

 

DataFrame.isna() = isnull() 과 동일

DataFrame.notna() = notnull() 과 동일