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

如何用For循环为Pandas DataFrame重复值累加固定整数并指定列名?

解决方案

原代码的问题分析

  • 仅对比当前行与上一行的值,无法处理连续3个及以上的重复值(比如第3个1000会和修改后的1025对比,不相等就不会累加)
  • 使用列索引而非列名,代码鲁棒性差(列顺序变化就会出错)

修正后的For循环代码

import pandas as pd

# 初始化原始DataFrame
df = pd.DataFrame({'Rounds':[1000,1000,1000,1000,3000,3000,4000,5000,6000,6000]})

# 保存原始Rounds值的副本,避免修改后丢失原始值
original_rounds = df['Rounds'].copy()
# 用于记录每个原始值已出现的次数
seen_counts = {}

# 遍历每一行
for idx in df.index:
    current_original_val = original_rounds[idx]
    if current_original_val not in seen_counts:
        # 首次出现,计数设为0
        seen_counts[current_original_val] = 0
    else:
        # 非首次出现,计数加1
        seen_counts[current_original_val] += 1
    # 更新当前行的Rounds值
    df.loc[idx, 'Rounds'] = current_original_val + 25 * seen_counts[current_original_val]

print(df)

代码说明

  1. 保存原始值副本:避免修改DataFrame后无法获取原始重复值
  2. 计数字典:seen_counts跟踪每个原始值已出现的次数,首次出现时计数为0,后续每次出现计数加1
  3. 累加逻辑:当前行的值 = 原始值 + 25 × 已出现次数,确保每重复一次就累加25

运行结果

执行后得到的DataFrame与目标完全一致:

Rounds
0    1000
1    1025
2    1050
3    1075
4    3000
5    3025
6    4000
7    5000
8    6000
9    6025

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 04:54:16