如何使用pandas处理DataFrame生成带嵌套对象的结构化数据集
实现方案
你可以通过分组聚合加字典转换实现需求,完整代码如下:
import pandas as pd # 构造输入DataFrame input_data = { 'url1': ['https://my-website.com/product1', 'https://my-website.com/product1', 'https://my-website.com/product2', 'https://my-website.com/product2'], 'url2': ['https://not-my-website.com/product1', 'https://not-my-website.com/product1', 'https://not-my-website.com/product2', 'https://not-my-website.com/product2'], 'size': ['S', 'L', 'S', 'L'], 'used_price': [100, 110, 210, 220], 'new_price': [1000, 1100, 2100, 2200], } input_df = pd.DataFrame(data=input_data) # 核心转换逻辑 output_df = ( input_df .groupby(['url1', 'url2'], as_index=False) .apply(lambda group: group.set_index('size')[['used_price', 'new_price']].to_dict('index')) .rename(columns={None: 'target'}) )
逻辑说明
- 以
url1、url2作为分组键,保证每个分组对应同一款商品的所有尺码数据 - 对每个分组将
size列设为行索引,仅保留价格相关的两列,调用to_dict('index')方法直接生成符合要求的{尺码: {价格类型: 价格值}}嵌套字典结构 - 重命名聚合生成的列名为
target,即得到目标DataFrame
注意:你给出的示例输出中部分价格和输入存在不一致(比如product1的L码used_price输入为110,示例输出写为120),上述代码会严格按照输入数据的实际值生成结果,若需要调整价格可提前对输入数据做清洗。
内容的提问来源于stack exchange,提问作者tedzz
相关产品推荐
相关产品推荐

