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

Python实现DataFrame按数量拆分:每行仅保留1个数量

解决方案

可以用Pandas的原生方法实现这个需求,以下两种都是简洁的Pythonic写法:

方法一:使用index.repeat

先根据qty列的值重复对应行,再统一将qty列设为1:

import pandas as pd

# 构造输入DataFrame
df = pd.DataFrame({
    'Name': ['Apple', 'Avocado'],
    'qty': [3, 2],
    'Price': [3.50, 1.50]
})

# 按qty值重复每行
df_expanded = df.loc[df.index.repeat(df['qty'])]
# 重置qty为1
df_expanded['qty'] = 1
# 重置索引(可选,让索引连续)
df_expanded = df_expanded.reset_index(drop=True)

print(df_expanded)

输出结果:

Name  qty  Price
0     Apple    1    3.5
1     Apple    1    3.5
2     Apple    1    3.5
3  Avocado    1    1.5
4  Avocado    1    1.5

方法二:使用explode

先把qty列转换为对应长度的[1,1,...]列表,再展开列表:

import pandas as pd

df = pd.DataFrame({
    'Name': ['Apple', 'Avocado'],
    'qty': [3, 2],
    'Price': [3.50, 1.50]
})

# 将qty转为包含对应数量1的列表
df['qty'] = df['qty'].map(lambda x: [1]*x)
# 展开列表并重置索引
df_expanded = df.explode('qty', ignore_index=True)

print(df_expanded)

两种方法都能高效实现需求,都是Pandas推荐的简洁写法,符合Pythonic风格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 14:12:26