请你重构 Products 表,查询每个产品在不同商店的价格,使得输出的格式变为(product_id, store, price) 。如果这一产品在商店里没有出售,则不输出这一行。
输出结果表中的 顺序不作要求 。
查询输出格式请参考下面示例。
import pandas as pd
def rearrange_products_table(products: pd.DataFrame) -> pd.DataFrame:
products_new = pd.melt(products,
id_vars=["product_id"], # 不需要转换的列
var_name="store", # 新列名:存储原列名
value_name="price" # 新列名:存储原值
)
products_new.dropna(subset='price',inplace=True)
return products_new
melt 方法
Pandas 的 .melt() 方法用于将宽格式(wide-format)的 DataFrame 转换为长格式(long-format)。它主要在数据整理和重塑时使用,比如准备数据进行可视化或分析。
pd.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name="value", col_level=None, ignore_index=True)
参数说明
frame: 要转换的 DataFrame。
id_vars: 不需要转换的列,这些列将保留在长格式的结果中。
value_vars: 需要转换的列,默认是除去 id_vars 的所有列。
var_name: 新列的列名,用于存储列名。默认值为 "variable"。
value_name: 新列的列名,用于存储对应值。默认值为 "value"。
col_level: 如果列是多重索引,指定需要转换的级别。
ignore_index: 是否忽略原始索引,默认为 True,会重置索引。