如何使用Python DataFrames替换Excel列中连续重复的数值类内容
实现方案
前置依赖安装
如果环境中缺少相关依赖,执行以下命令安装:
pip install pandas openpyxl numpy
代码实现
步骤1:导入依赖库
import pandas as pd import numpy as np
步骤2:读取Excel数据
# 替换为你的本地Excel文件路径,sheet_name可指定要处理的工作表序号/名称 df = pd.read_excel("待处理文件.xlsx", sheet_name=0)
步骤3:定义单列表格处理逻辑
我们定义Numbered类数值为int、float类型且不属于布尔、字符串类型的值,仅将列中连续出现的该类数值替换为空值,保留所有文本、布尔类型内容不变:
def process_single_column(col): # 标记为需要保留的类型:布尔值、字符串 to_keep = col.apply(lambda x: isinstance(x, (bool, str))) # 标记属于Numbered类的数值 is_number_val = ~to_keep # 标记连续出现的Numbered类数值:当前值是数值,且同一列上一行也是数值 consecutive_number = is_number_val & is_number_val.shift(1, fill_value=False) # 连续数值替换为空,其余内容保留 return col.where(~consecutive_number, np.nan)
步骤4:批量处理所有列并导出结果
# 对所有列应用处理规则 processed_df = df.apply(process_single_column) # 导出处理后的结果到新Excel文件 processed_df.to_excel("处理完成结果.xlsx", index=False)
规则调整说明
如果你对“连续出现的Numbered类数值”的判定规则有差异,可以修改consecutive_number的判定逻辑:
- 如果需要替换连续重复的相同数值:修改为
consecutive_number = is_number_val & (col == col.shift(1, fill_value=False)) - 如果需要把所有Numbered类数值都替换为空:直接修改返回逻辑为
return col.where(to_keep, np.nan)
内容的提问来源于stack exchange,提问作者Sanket Patel
相关产品推荐
相关产品推荐

