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

含缺失值的列相乘问题:Pandas中无需填充0/1的解决方案

解决方案

你的代码直接使用astype(float)会报错,因为空字符串无法直接转换为浮点数。要保留缺失值(不填充0或1),可以先把A列的空字符串转换为Pandas标准的缺失值NaN,再进行乘法运算:

修改后的代码

import pandas as pd

df = pd.DataFrame({
    "A": [1,2,"",4],
    "B": [2.0,5.0,6.0,7.0]
})
# 将A列转换为数值型,空字符串转为NaN
df["A"] = pd.to_numeric(df["A"], errors='coerce')
# 两列相乘,NaN参与运算结果仍为NaN
df["C"] = df["A"] * df["B"]
print(df)

输出结果

A    B     C
0  1.0  2.0   2.0
1  2.0  5.0  10.0
2  NaN  6.0   NaN
3  4.0  7.0  28.0

关键说明

  • pd.to_numeric(df["A"], errors='coerce'):该方法会尝试将列内元素转换为数值类型,遇到无法转换的值(比如空字符串)时,会将其转为NaN(Pandas的缺失值标记),而非抛出错误。
  • NaN与任何数值相乘的结果仍为NaN,这样既完成了有效数据的运算,又保留了原数据的缺失状态,无需用0或1填充。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 10:52:07