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

如何识别DataFrame列中某值的第二次出现并修改同行列值(无索引不可用iloc)

识别DataFrame中特定值的第二次出现并修改对应列值

你需要处理一个无索引的DataFrame,目标是找到col1中值为'b'的第二次出现,并将该行的col2值修改为'p'。

示例输入:

col1     col2     
 'a'      's'
 'b'      's'
 'f'      's'
 'g'      's'
 'b'      's'
 'l'      's'

处理后输出:

col1     col2     
 'a'      's'
 'b'      's'
 'f'      's'
 'g'      's'
 'b'      'p'
 'l'      's'

实现步骤

  • 创建示例DataFrame(已有数据可跳过此步)
  • 生成临时计数列,对col1中等于'b'的行累加计数
  • 定位计数为2的行,修改col2的值
  • 可选:删除临时计数列

代码实现

import pandas as pd

# 创建无索引的示例DataFrame
df = pd.DataFrame({
    'col1': ['a', 'b', 'f', 'g', 'b', 'l'],
    'col2': ['s', 's', 's', 's', 's', 's']
})

# 生成临时计数列:仅对col1等于'b'的行从1开始计数
df['count_b'] = df.groupby('col1').cumcount() + 1

# 定位第二次出现'b'的行,修改col2为'p'
df.loc[df['count_b'] == 2, 'col2'] = 'p'

# 可选:删除临时计数列
df = df.drop('count_b', axis=1)

# 输出结果
print(df)

代码说明

  • groupby('col1').cumcount()会对每个col1分组内的行从0开始计数,加1后让计数从1起步,刚好对应出现次数
  • df.loc[条件, 列名]可以精准定位目标行并修改值,完全不依赖索引,适配无索引的DataFrame场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 18:15:40