You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中为数字列加1并将空值(NULL)替换为1

解决方案

你的代码仅处理了空字符串,未覆盖pandas中代表NULL的NaN值——NaN执行加法操作后仍为NaN,因此需要先统一处理空字符串和NaN,再执行加1操作。以下分两种常见需求给出实现:

需求1:空值(空字符串/NaN)替换为1后再加1,最终空值结果为2,数值结果为原数值+1

该逻辑和你原代码思路一致,补充处理NaN即可:

import pandas as pd

# 同时将空字符串和NaN替换为1
out_df['# of Days'] = out_df['# of Days'].replace(['', pd.NA], 1)
# 整列执行加1操作
out_df['# of Days'] += 1

如果列是object类型(混合了字符串和数值),建议先转为数值类型避免类型报错:

import pandas as pd

# 第一步:将列转为数值类型,无法转换的内容(比如空字符串)转为NaN
out_df['# of Days'] = pd.to_numeric(out_df['# of Days'], errors='coerce')
# 第二步:填充NaN为1
out_df['# of Days'] = out_df['# of Days'].fillna(1)
# 第三步:整列加1
out_df['# of Days'] += 1

需求2:数值直接加1,空值(空字符串/NaN)直接替换为1(无需再加1)

如果你的真实需求是保留空值为1、数值加1,可使用add方法的fill_value参数实现高效矢量化操作:

import pandas as pd

# 先把空字符串转为NaN,统一处理空值
out_df['# of Days'] = out_df['# of Days'].replace('', pd.NA)
# 对非NaN值加1,NaN用0填充后加1(最终得到1)
out_df['# of Days'] = out_df['# of Days'].add(1, fill_value=0)

也可以用apply实现(适合简单场景,但效率不如矢量化操作):

import pandas as pd

out_df['# of Days'] = pd.to_numeric(out_df['# of Days'], errors='coerce')
out_df['# of Days'] = out_df['# of Days'].apply(lambda x: x + 1 if pd.notna(x) else 1)

内容的提问来源于stack exchange,提问作者Heidi Xiong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 21:22:48