[Pandas] 리트코드 : 175. Combine Two Tables
문제
Table: Person
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| personId | int |
| lastName | varchar |
| firstName | varchar |
+-------------+---------+
personId is the primary key (column with unique values) for this table.
This table contains information about the ID of some persons and their first and last names.
Table: Address
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| addressId | int |
| personId | int |
| city | varchar |
| state | varchar |
+-------------+---------+
addressId is the primary key (column with unique values) for this table.
Each row of this table contains information about the city and state of one person with ID = PersonId.
Write a solution to report the first name, last name, city, and state of each person in the Person table. If the address of a personId is not present in the Address table, report null instead.
Return the result table in any order.
The result format is in the following example.
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 |
+-----------+----------+---------------+----------+
Explanation:
There is no address in the address table for the personId = 1 so we return null in their city and state.
addressId = 1 contains information about the address of personId = 2.
문제풀이
MySQL
SELECT P.FIRSTNAME, P.LASTNAME, A.CITY, A.STATE
FROM PERSON AS P
LEFT OUTER JOIN ADDRESS AS A ON P.PERSONId = A.PERSONId;
Pandas
import pandas as pd
def combine_two_tables(person: pd.DataFrame, address: pd.DataFrame) -> pd.DataFrame:
df = pd.merge(person,address, on="personId", how="left")
return df[['firstName','lastName', 'city', 'state']]
- 간단하게 join만 해주면 되는 문제.
- 공통된 부분이 없는 경우 null값을 만들어야 하므로 left join을 사용한다.
코멘트
- 기본적인 join 문제.
- 공통 요소 값이 없는 경우는 null로 처리된다.
'Data Analysis > Query' 카테고리의 다른 글
리트코드 : 197. Rising Temperature (0) | 2024.04.01 |
---|---|
리트코드 : 183. Customers Who Never Order (0) | 2024.04.01 |
리트코드 : 182. Duplicate Emails (0) | 2024.03.31 |
리트코드 : 181. Employees Earning More Than Their Managers (0) | 2024.03.27 |
리트코드 : 196. Delete Duplicate Emails (0) | 2024.03.26 |
185. Department Top Three Salaries (0) | 2024.03.26 |
리트코드: 184. Department Highest Salary (0) | 2024.03.25 |
댓글