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

Python中基于Quantity列复制行时,如何逐步修改复制行的Price值?

按Quantity列复制行并逐次递增Price值

以下是几种主流工具的实现方案,完全贴合你基于Quantity复制行且Price逐次+1的需求:

Excel 公式实现

假设数据从A2单元格开始,A列是唯一标识(比如ID),B列是Quantity,C列是Price:

  1. 生成所有行的标识列(D列):
    在D2输入公式后下拉至空值:
    =IF(ROW()-ROW($D$1)<=SUM($B$2:$B$100),INDEX($A$2:$A$100,MATCH(TRUE,SUBTOTAL(9,OFFSET($B$2,0,0,ROW($B$2:$B$100)-ROW($B$2)+1))>=ROW()-ROW($D$1),0)),"")
    
  2. 生成递增后的Price列(E列):
    在E2输入公式后下拉:
    =IF(D2<>"",INDEX($C$2:$C$100,MATCH(D2,$A$2:$A$100,0))+COUNTIF($D$2:D2,D2)-1,"")
    

原理:用COUNTIF统计当前标识出现的次数,减1就是Price的递增量——原行是第1次出现,所以加0;复制的第一行是第2次,加1,以此类推。

Power Query (Excel内置工具) 实现

  1. 选中数据区域,点击「数据」选项卡 → 「从表格/区域」导入Power Query编辑器。
  2. 添加自定义列,输入公式:
    = List.Generate(
        () => [Counter=1, NewPrice=[Price]],
        each [Counter] <= [Quantity],
        each [Counter=[Counter]+1, NewPrice=[Price]+[Counter]],
        each [NewPrice]
      )
    
  3. 点击自定义列右侧的「展开到新行」按钮,将列表拆分为多行。
  4. 删除原Quantity和Price列,保留新生成的NewPrice(可重命名为Price),最后关闭并上载到Excel。

Python Pandas 实现

import pandas as pd

# 示例数据
df = pd.DataFrame({
    'ID': ['A001', 'A002'],
    'Quantity': [3, 1],
    'Price': [20, 15]
})

# 按Quantity+1复制行(+1是保留原行)
expanded_df = df.loc[df.index.repeat(df['Quantity'] + 1)]
# 分组后给Price递增加1
expanded_df['Price'] = expanded_df.groupby(level=0)['Price'].transform(lambda x: x + range(len(x)))
# 重置索引
expanded_df = expanded_df.reset_index(drop=True)

print(expanded_df)

输出结果:

ID  Quantity  Price
0  A001         3     20
1  A001         3     21
2  A001         3     22
3  A001         3     23
4  A002         1     15
5  A002         1     16

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 01:55:11