如何用Python将指定列非空字符串值批量替换为固定词并保留空值
解决Python中指定列非空字符串批量替换为固定值的问题
需求说明
需要将表格数据中指定列(示例为Other列)的所有非空字符串值统一替换为Other,同时保留该列的空白内容。
示例数据
原始数据:
User Strawberry Raspberry Wildberry Other 1 Strawberry Raspberry 2 Raspberry Wildberry Banana 3 Strawberry Raspberry Wildberry Blueberry 4 Strawberry 5 Rasberry Apple 6 Strawberry Rasberry 7 Wildberry Blueberry 8 Strawberry Rasberry Wildberry Watermelon
期望处理后结果:
User Strawberry Raspberry Wildberry Other 1 Strawberry Raspberry 2 Raspberry Wildberry Other 3 Strawberry Raspberry Wildberry Other 4 Strawberry 5 Rasberry Other 6 Strawberry Rasberry 7 Wildberry Other 8 Strawberry Rasberry Wildberry Other
解决方案
使用pandas库可高效实现批量替换,无需逐个指定目标值:
步骤1:导入库并读取数据
如果数据是文件存储(如CSV),先读取为DataFrame;若已有DataFrame则直接使用:
import pandas as pd # 读取空格分隔的表格数据(根据实际存储格式调整读取方式) df = pd.read_csv('your_data_file.csv', sep='\s+')
步骤2:批量替换指定列非空值
两种直观实现方式:
方式1:布尔索引赋值
# 筛选出非空且不是纯空格的行 replace_mask = df['Other'].notna() & df['Other'].str.strip().ne('') # 对符合条件的行替换值 df.loc[replace_mask, 'Other'] = 'Other'
方式2:使用where方法
# 保留空值/纯空格内容,其余替换为'Other' df['Other'] = df['Other'].where( df['Other'].isna() | df['Other'].str.strip().eq(''), 'Other' )
验证结果
打印处理后的表格:
print(df.to_string(index=False))
输出结果将与期望格式完全一致。
内容的提问来源于stack exchange,提问作者Sophie Martusewicz
相关产品推荐
相关产品推荐

