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
相关产品推荐
相关产品推荐

