如何识别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
相关产品推荐
相关产品推荐

