Table: Products
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| product_id | int |
| store1 | int |
| store2 | int |
| store3 | int |
+-------------+---------+
product_id는 이 테이블의 기본 키(고유 값이 있는 열)입니다.
이 테이블의 각 행은 3개의 다른 상점(store1, store2, store3)에서 제품의 가격을 나타냅니다.
만약 제품이 특정 상점에서 판매되지 않는다면, 그 상점의 가격 열에는 null 값이 표시됩니다.
문제
제품 테이블을 재구성하여 각 행이 (product_id, store, price) 형식이 되도록 하세요. 만약 제품이 특정 상점에서 판매되지 않는다면, 해당 제품_id와 상점 조합을 결과 테이블에 포함하지 마세요.
결과 테이블은 예시와 같은 형식으로 반환됩니다.
Example 1:
Input:
Products table:
+------------+--------+--------+--------+
| product_id | store1 | store2 | store3 |
+------------+--------+--------+--------+
| 0 | 95 | 100 | 105 |
| 1 | 70 | null | 80 |
+------------+--------+--------+--------+
Output:
+------------+--------+-------+
| product_id | store | price |
+------------+--------+-------+
| 0 | store1 | 95 |
| 0 | store2 | 100 |
| 0 | store3 | 105 |
| 1 | store1 | 70 |
| 1 | store3 | 80 |
+------------+--------+-------+
설명 : 제품 0은 모든 세 상점에서 각각 95, 100, 105의 가격으로 판매됩니다. 제품 1은 store1에서 가격 70으로, store3에서 가격 80으로 판매됩니다. 이 제품은 store2에서는 판매되지 않습니다.
✏️ 풀이
import pandas as pd
def rearrange_products_table(products: pd.DataFrame) -> pd.DataFrame:
df_melt = pd.melt(products, id_vars='product_id', var_name='store', value_name='price').dropna()
return df_melt
dropna()를 이용해서 판매하지 않는 null 값인 데이터는 삭제한다
'[코딩테스트] > [Pandas]' 카테고리의 다른 글
[LeetCode - Pandas] (Easy) 1757. Recyclable and Low Fat Products (0) | 2025.04.09 |
---|---|
[LeetCode - Pandas] (Easy) 1789. Primary Department for Each Employee (0) | 2025.04.07 |
[LeetCode - Pandas] (Easy) 1873. Calculate Special Bonus (0) | 2025.04.06 |
[LeetCode - Pandas] (Easy) 1890. The Latest Login in 2020 (0) | 2025.04.06 |
[LeetCode - Pandas] (Easy) 1965. Employees With Missing Information (0) | 2025.04.06 |