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

如何用Pandas方法链将DataFrame的每一行重复3次?

Pandas方法链实现每行重复3次

原始DataFrame

import pandas as pd

df = pd.DataFrame({
    'id': [1, 2, 3, 4, 5],
    'animal': ['dog', 'cat', 'rabbit', 'horse', 'fox']
})

预期输出

id  animal
0    1     dog
1    1     dog
2    1     dog
3    2     cat
4    2     cat
5    2     cat
6    3  rabbit
7    3  rabbit
8    3  rabbit
9    4   horse
10   4   horse
11   4   horse
12   5     fox
13   5     fox
14   5     fox

方法链实现方案

最简洁高效的方式是利用索引重复配合loc,通过方法链串联操作:

result = (
    df
    .loc[lambda x: x.index.repeat(3)]  # 基于重复3次的索引选取行
    .reset_index(drop=True)  # 重置索引为连续序列(可选,按需保留)
)

步骤解释

  1. lambda x: x.index.repeat(3):生成包含原索引重复3次的序列,比如原索引是0-4,处理后变成[0,0,0,1,1,1,2,2,2,3,3,3,4,4,4]
  2. .loc[...]:根据这个重复索引序列,从原DataFrame中选取对应行,实现每行重复3次
  3. .reset_index(drop=True):如果不需要保留原有的重复索引,执行此步骤生成连续新索引;若要保留原索引可省略

另外也可以用explode的方式实现,适合理解逻辑但效率稍低:

result = (
    df
    .assign(repeat_col=lambda x: [range(3)]*len(x))  # 给每行添加长度为3的列表
    .explode('repeat_col')  # 将列表展开成多行
    .drop('repeat_col', axis=1)  # 删除临时添加的列
    .reset_index(drop=True)
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 01:57:06