You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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'})
)

逻辑说明

  1. 以url1、url2作为分组键,保证每个分组对应同一款商品的所有尺码数据
  2. 对每个分组将size列设为行索引,仅保留价格相关的两列,调用to_dict('index')方法直接生成符合要求的{尺码: {价格类型: 价格值}}嵌套字典结构
  3. 重命名聚合生成的列名为target,即得到目标DataFrame

注意:你给出的示例输出中部分价格和输入存在不一致(比如product1的L码used_price输入为110,示例输出写为120),上述代码会严格按照输入数据的实际值生成结果,若需要调整价格可提前对输入数据做清洗。

内容的提问来源于stack exchange,提问作者tedzz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 14:57:00