如何将DataFrame数据列中的字符值“nothing”替换为数值0
Pandas 替换指定字符为数值的解决方案
以下方案均适配大体积DataFrame,几百行规模下执行无任何性能压力:
- 方案1:直接使用
replace方法(最简洁)
直接对目标列执行精准匹配替换,匹配到nothing时自动替换为0,替换完成后可统一将列转换为数值类型:
# 替换指定值 df['Candy'] = df['Candy'].replace('nothing', 0) # 转换列类型为整数,避免仍为object类型影响后续数值计算 df['Candy'] = df['Candy'].astype(int) # 如果存在其他非标准数值格式,可改用to_numeric做容错转换 # df['Candy'] = pd.to_numeric(df['Candy'], errors='coerce').fillna(0).astype(int)
- 方案2:条件赋值(灵活扩展适配复杂逻辑)
如果后续需要叠加更多判断条件,可以用loc做精准条件赋值:
df.loc[df['Candy'] == 'nothing', 'Candy'] = 0 df['Candy'] = df['Candy'].astype(int)
- 方案3:多列批量处理
如果有多列存在同样的nothing值需要替换,可以批量操作:
# 填入所有需要处理的列名 target_cols = ['Candy', 'Col1', 'Col2'] df[target_cols] = df[target_cols].replace('nothing', 0).apply(pd.to_numeric)
如果需要兼容大小写不同的nothing写法(比如Nothing、NOTHING),可以开启正则匹配和忽略大小写参数:
df['Candy'] = df['Candy'].replace(r'^nothing$', 0, regex=True, case=False)
内容的提问来源于stack exchange,提问作者user305902
相关产品推荐
相关产品推荐

