Pandas DataFrame特定转置:将attr列值转为列名并保留price列
问题解决方法
你需要实现的是长表转宽表操作,你之前的分组逻辑存在错误,将attr和values作为分组键会拆分属于同一产品的关联属性,正确实现方式如下:
实现步骤
- 为每个独立产品生成唯一分组标识:你的原始数据中每个产品的首个属性都是
Mærke(品牌),以此为分界生成分组ID,可避免同价格不同产品的混淆问题
df['group_id'] = (df['attr'] == 'Mærke').cumsum()
- 调用pivot_table完成宽表转换
result = df.pivot_table( index=['group_id', 'price'], columns='attr', values='values', aggfunc='first' ).reset_index().drop(columns='group_id')
- (可选)调整列顺序与列名匹配你的预期输出
# 重命名价格列、调整列顺序 result = result.rename(columns={'price': 'Price'}) result = result[['Mærke', 'Produkttype', 'Serie', 'Model', 'Materiale', 'Størrelse', 'Price']]
结果验证
执行后输出的结果结构和你提供的预期完全一致,缺失的属性会自动填充NaN值。
内容的提问来源于stack exchange,提问作者awi1100
相关产品推荐
相关产品推荐

