如何替换DataFrame某列中连续出现≤3次的特定值行
实现方案(基于pandas处理)
核心逻辑
- 对目标列的连续相同值自动分组
- 统计每个分组的连续出现次数
- 筛选出取值为指定特定值、且连续出现次数≤3的分组,批量替换对应行的取值
完整代码示例
import pandas as pd # 1. 读取CSV文件 df = pd.read_csv('你的CSV文件路径.csv') # 2. 自定义参数,替换为你实际场景的对应取值 target_col = '你要处理的列名' # 待处理的目标列名称 target_val = '需要替换的特定值' # 你指定的要筛选的特定值 replace_val = '替换后的值' # 符合条件的行要替换成的内容 # 3. 生成连续相同值的分组ID df['group_id'] = (df[target_col] != df[target_col].shift()).cumsum() # 4. 统计每个分组的长度和对应取值 group_stats = df.groupby('group_id').agg( group_len = (target_col, 'count'), group_val = (target_col, 'first') ).reset_index() # 5. 统计结果合并回原数据表 df = df.merge(group_stats, on='group_id', how='left') # 6. 替换符合条件的行 df.loc[(df['group_val'] == target_val) & (df['group_len'] <= 3), target_col] = replace_val # 7. 删除辅助列,输出处理后的CSV df = df.drop(columns=['group_id', 'group_len', 'group_val']) df.to_csv('处理后的结果.csv', index=False)
注意事项
- 如果你要匹配的特定值是空值
NaN,请把第6步的判断条件df['group_val'] == target_val替换为df['group_val'].isna() - 该逻辑不会修改连续出现次数大于3次的特定值行,也不会修改非特定值的所有行,完全匹配需求
内容的提问来源于stack exchange,提问作者Pallavi C
相关产品推荐
相关产品推荐

