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

Pandas DataFrame按列值条件重复指定行的实现方法

pandas按列值条件重复指定行的简洁实现

用原生pandas索引重复方案即可,兼容字符串、数值、时间等所有列类型,不会出现旧方案的类型报错问题。

核心思路

  • 预先配置不同列值对应的行总保留份数:原行本身占1份,需要额外重复N次就把总份数设为N+1
  • 为DataFrame每一行匹配对应的重复次数,未配置规则的行默认保留1份
  • 按计算好的次数重复行索引,通过索引直接取值得到结果,最后重置索引即可

可直接运行的示例代码

import pandas as pd

# 原始测试数据
data = [['Karan',23],['Rohit',22],['Macron',22], ['Sahil',21],['Aryan',24]]
df = pd.DataFrame(data, columns=['Name','Age'])

# 重复规则配置:key为Age列的目标取值,value为对应行最终保留的总份数
# 示例配置和给出的预期结果对齐:Age=22、24的行各保留2份(原行+额外重复1次)
# 如果需要额外重复2次,将对应value修改为3即可
repeat_config = {22: 2, 24: 2}

# 为每行匹配重复次数
repeat_counts = df['Age'].map(repeat_config).fillna(1).astype(int)
# 按次数重复行,重置废弃旧索引
df_result = df.loc[df.index.repeat(repeat_counts)].reset_index(drop=True)

效果验证

执行print(df_result)输出和预期完全一致:

Name  Age
0   Karan   23
1   Rohit   22
2   Rohit   22
3  Macron   22
4  Macron   22
5   Sahil   21
6   Aryan   24
7   Aryan   24

方案特点

  • 纯pandas实现,不需要额外安装/导入其他计算库
  • 全列类型兼容,不存在旧方案处理字符串列失效、报错的问题
  • 规则扩展灵活,后续需要新增其他列值的重复逻辑,直接在repeat_config里添加键值对即可
  • 执行效率高,比逐行遍历、拼接的实现快数十倍,大数据量场景下也能稳定运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:21:34