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

DataFrame中重复值处理:如何基于另一列值复制指定列条目?

按指定次数复制DataFrame列值的实现方案

嘿,我来帮你搞定这个需求!咱们先拿一个具体的例子来说明,这样你能更直观地理解。

示例场景

假设你有这样一个原始DataFrame:

import pandas as pd

df = pd.DataFrame({
    'LT': ['A', 'B', 'C'],
    '年份': [2, 3, 1]  # 这个列的值就是对应LT需要重复的次数
})

你的目标是把每个LT条目按照它对应的年份值重复相应次数,最终得到这样的结果:

LT
0  A
1  A
2  B
3  B
4  B
5  C

几种可行的实现方法

下面给你介绍三种实用的方式,你可以根据自己的习惯和数据规模来选:

方法1:利用repeat和索引定位(高效简洁)

这是pandas里比较原生高效的做法,适合处理较大的数据集:

# 生成重复后的索引序列
repeated_idx = df.index.repeat(df['年份'])
# 根据重复索引提取LT列,重置索引得到最终结果
result_df = df.loc[repeated_idx, ['LT']].reset_index(drop=True)

方法2:循环生成列表(直观易懂)

如果喜欢更直白的逻辑,用循环构造目标列表再转成DataFrame也很清晰:

lt_result = []
# 遍历每一行,把LT值重复对应次数后加入列表
for lt_val, repeat_count in zip(df['LT'], df['年份']):
    lt_result.extend([lt_val] * repeat_count)
# 转成DataFrame
result_df = pd.DataFrame({'LT': lt_result})

方法3:结合apply和explode(灵活通用)

这种方法先把每个LT转成对应长度的列表,再用explode展开,也是很常用的技巧:

# 给每行生成一个重复LT的列表
df['LT_list'] = df.apply(lambda row: [row['LT']] * row['年份'], axis=1)
# 展开列表并整理成目标格式
result_df = df.explode('LT_list').rename(columns={'LT_list': 'LT'}).drop(columns=['年份']).reset_index(drop=True)

这几种方法都能达到你想要的效果,你可以根据自己的代码风格和数据量来选择~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:08:19