[코딩테스트]/[Pandas]
[LeetCode - Pandas] (Easy) 175. Combine Two Tables
잰잰'
2025. 5. 9. 12:18
Table: Person
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| personId | int |
| lastName | varchar |
| firstName | varchar |
+-------------+---------+
이 테이블에서 personId는 기본 키(고유한 값이 있는 열)입니다.
이 테이블은 일부 사람들의 ID와 그들의 이름 및 성에 대한 정보를 포함하고 있습니다.
Table: Address
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| addressId | int |
| personId | int |
| city | varchar |
| state | varchar |
+-------------+---------+
이 테이블에서 addressId는 기본 키(고유한 값이 있는 열)입니다.
이 테이블의 각 행은 ID = PersonId인 한 사람의 도시와 주에 대한 정보를 포함하고 있습니다.
문제
Person 테이블에 있는 각 사람의 이름, 성, 도시, 주를 출력하는 해결책을 작성하세요.
만약 해당 personId의 주소가 Address 테이블에 없다면, 대신 null을 출력하세요.
결과 테이블은 아무 순서로 반환해도 됩니다.
결과 형식은 다음 예시를 따르세요.
Example 1:
Input:
Person table:
+----------+----------+-----------+
| personId | lastName | firstName |
+----------+----------+-----------+
| 1 | Wang | Allen |
| 2 | Alice | Bob |
+----------+----------+-----------+
Address table:
+-----------+----------+---------------+------------+
| addressId | personId | city | state |
+-----------+----------+---------------+------------+
| 1 | 2 | New York City | New York |
| 2 | 3 | Leetcode | California |
+-----------+----------+---------------+------------+
Output:
+-----------+----------+---------------+----------+
| firstName | lastName | city | state |
+-----------+----------+---------------+----------+
| Allen | Wang | Null | Null |
| Bob | Alice | New York City | New York |
+-----------+----------+---------------+----------+
설명 :
personId = 1에 해당하는 주소가 Address 테이블에 없기 때문에, 해당 사람의 도시와 주는 null로 반환됩니다.
addressId = 1은 personId = 2에 대한 주소 정보를 포함하고 있습니다.
✏️ 풀이
import pandas as pd
def combine_two_tables(person: pd.DataFrame, address: pd.DataFrame) -> pd.DataFrame:
df = pd.merge(person, address, how='left', on='personId')
return df[['firstName', 'lastName', 'city', 'state']]
1. person 기준으로 address 데이터 프레임 조인
2. 데이터 조회