Pandas处理含DIV0的列求和后得到空列的问题求助
问题原因与解决方案
原因分析
你通过pd.to_numeric(errors="coerce")将DIV0转换为了pandas的缺失值(NaN),但pandas中**NaN与任何数值进行算术运算的结果都会是NaN**,所以直接执行df["A"] + df["B"]会得到全为NaN的C列,也就是你看到的“空列”。
解决方案
可以通过两种方式实现预期的求和逻辑:
方法一:先填充缺失值再相加
将转换后的NaN替换为0,再执行加法:
import pandas as pd df = pd.DataFrame({ "A": [2, 3, 5, "DIV0"], "B": ["DIV0", "DIV0", "DIV0", 3] }) df["A"] = pd.to_numeric(df["A"], errors="coerce").fillna(0) df["B"] = pd.to_numeric(df["B"], errors="coerce").fillna(0) df["C"] = df["A"] + df["B"]
方法二:使用add方法指定填充值
利用pandas的add方法,在相加时自动将NaN替换为0,无需提前填充:
import pandas as pd df = pd.DataFrame({ "A": [2, 3, 5, "DIV0"], "B": ["DIV0", "DIV0", "DIV0", 3] }) df["A"] = pd.to_numeric(df["A"], errors="coerce") df["B"] = pd.to_numeric(df["B"], errors="coerce") df["C"] = df["A"].add(df["B"], fill_value=0)
结果验证
两种方法执行后,都会得到你预期的C列取值:2、3、5、3。
内容的提问来源于stack exchange,提问作者Humzah Qazilbash
相关产品推荐
相关产品推荐

