如何基于DataFrame列值生成新行:SKU仓位分配需求
SKU仓位分配拆分实现方案
需求明确:根据SKU所需仓位数,将每个SKU拆分为多行记录——前locations_needed-1行使用仓位额定体积location_amount,最后一行使用剩余体积remainder_volume,最终生成完整的仓位分配表。
原代码问题修正
原代码存在语法错误(缩进混乱、循环逻辑错误、DataFrame整列操作不符合需求),以下是修正后的可运行Pandas代码:
import pandas as pd # 示例输入数据表 data = { 'SKU': ['SKU001', 'SKU002'], 'locations_needed': [3, 2], 'location_amount': [10, 15], 'remainder_volume': [5, 3] } df = pd.DataFrame(data) new_locs = [] # 遍历每一行SKU数据,逐个处理拆分 for _, row in df.iterrows(): sku = row['SKU'] needed_count = row['locations_needed'] full_volume = row['location_amount'] remainder = row['remainder_volume'] # 生成前needed_count-1条满载仓位记录 for _ in range(needed_count - 1): new_locs.append({'SKU': sku, 'assigned_volume': full_volume}) # 生成最后一条剩余体积的仓位记录 new_locs.append({'SKU': sku, 'assigned_volume': remainder}) # 转换为最终的DataFrame result_df = pd.DataFrame(new_locs) print(result_df)
核心逻辑说明
- 遍历原表的每一行SKU,针对单个SKU完成仓位拆分,避免整列操作的逻辑错误
- 先循环needed_count-1次,生成满载体积的仓位记录
- 最后添加剩余体积的记录,保证拆分后的总行数与所有SKU的locations_needed总和一致
运行输出示例
SKU assigned_volume 0 SKU001 10 1 SKU001 10 2 SKU001 5 3 SKU002 15 4 SKU002 3
内容的提问来源于stack exchange,提问作者Jill Cox
相关产品推荐
相关产品推荐

