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

如何避免在Pandas DataFrame中插入多余零值?附实例求助

解决方法

方法1:精准提取有效数值(兼容正负、小数、NaN)

你用str.replace(r'\D', ' ')会把所有非数字字符替换成空格,导致出现多余内容。可以用正则直接提取包含正负号、小数点的数字部分,再转成数值类型:

# 提取数字核心部分,忽略括号、百分号等无关字符
df2[cell] = df2[cell].astype(str).str.extract(r'([-+]?\d+\.?\d*)', expand=False)
# 转换回数值格式,自动保留NaN
df2[cell] = pd.to_numeric(df2[cell], errors='coerce')

处理(37)%会直接得到37,-0.37这类负数也能完整保留,NaN值不受影响。

方法2:针对百分号格式的定向处理

如果数据都是(37)%、-0.37%这类带百分号的格式,也可以分步清理:

# 先去掉百分号
df2[cell] = df2[cell].astype(str).str.replace('%', '', regex=False)
# 再移除括号
df2[cell] = df2[cell].str.replace(r'[()]', '', regex=True)
# 转成数值类型
df2[cell] = pd.to_numeric(df2[cell], errors='coerce')

这种方式更贴合你的数据格式,清理逻辑直观易懂。

处理后示例输出

执行上述方法后,df2[cell].to_list()的输出为:
[3.04, -0.37, nan, -1.0, -0.44, -0.48, -0.25, -0.27, -0.59, -0.2, -0.09, 0.03, -0.42, -0.69, -0.04, -0.76, -0.66, -0.21, -0.53, -0.47, -0.1, -0.12, -0.47, 0.19, -0.21, 0.2, nan, -0.33, -0.06, 0.04, 0.44]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 07:24:22