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

pandas如何根据TruckNum列的值重复DataFrame对应数据行?

简便实现方案

用pandas内置的索引重复方法就能高效实现需求,不需要写循环遍历,代码非常简洁:

import pandas as pd

# 构造原始DataFrame
df = pd.DataFrame({
    "Destination": ["dest1", "dest2", "dest3", "dest4"],
    "Capacity": [1, 1, 2, 2],
    "TruckNum": [1, 2, 2, 2]
})

# 按TruckNum值重复行并整理结果
res = df.loc[df.index.repeat(df["TruckNum"])] \
        .drop("TruckNum", axis=1) \
        .reset_index(drop=True)

执行后打印res就能得到预期的输出结果:

Destination  Capacity
0       dest1         1
1       dest2         1
2       dest2         1
3       dest3         2
4       dest3         2
5       dest4         2
6       dest4         2

逻辑说明

  • df.index.repeat(df["TruckNum"]):逐行读取TruckNum的取值n,将对应行的索引重复n次,生成新的索引序列
  • df.loc[新索引序列]:按照生成的重复索引取出对应行,自动完成行重复操作
  • 后续通过drop移除不需要的TruckNum列,reset_index(drop=True)重置行索引即可。

这个方法性能很好,即使是十万级以上的大数据量也能快速运行,比apply、循环之类的写法效率高很多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:57:16