D15—【1795. 每个产品在不同商店的价格】

请你重构 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,会重置索引。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

算法小菜鸟moon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值