Pandas处理除数为零:inf替换与函数应用详解

Dylan
Dylan
发布时间:2026-10-14 | 2人浏览过
原创

本文探讨在Pandas DataFrame中进行除法运算时,当除数为零导致结果为无穷大(inf)的处理方法。通过示例展示如何利用numpy库将inf替换为零,以及使用apply函数结合自定义逻辑安全计算比率,解决数据清洗中的常见异常值问题。

Pandas处理除数为零:inf替换与函数应用详解

首先看如下示例情况:

data2[‘营业成本率'] = data2[‘营业成本本年累计']/data2[‘营业收入本年累计']*100

当存在营业收入本年累计值为0的情形时,

计算出的营业成本率会变为inf(无穷大)。但在报表展示中,我们需要将其体现为零,可采用如下方法进行填充处理:


data2['营业成本率'] = data2['营业成本本年累计']/data2['营业收入本年累计']*100
data2['营业成本率'].replace([np.inf, -np.inf, "", np.nan], 0, inplace=True)

注意,该方法需要引用numpy库的支持。

具体操作是需要先导入相关库。


import pandas as pd # 导入panads
from openpyxl import load_workbook # 读取时导入这个
from openpyxl.styles import Font, Alignment # 设置单元格格式
from openpyxl.utils import get_column_letter, column_index_from_string
# 柱形BarChart 3D柱BarChart3D
from openpyxl.chart import label, BarChart3D, BarChart, Reference
import numpy as np

此外,也可以采用定义函数并结合apply方法的方式来实现。


def get_benrate(series):
 shouru = series['营业收入本年累计']
 chengben = series['营业成本本年累计']
 if shouru == 0:
  return 0
 else:
  return chengben/shouru*100

data2['营业成本率'] = 0
data2['营业成本率'] = data2.apply(get_benrate, axis=1)

此前虽然曾尝试使用其他方法


data2['三项费用完成比例本月数'] = 0
data2.loc[data2['任务指标三项费用'] != 0,'三项费用完成比例本月数'] = data2['三项费用合计本月数']/data2['任务指标三项费用']*100

解决过除数为0的情况,但在上述最开始的例子中,却始终无法生效,一直提示错误,具体原因尚不明确,也欢迎各位读者指正。

至此,关于Pandas DataFrame处理除数为零的探讨暂告一段落。如需了解更多相关Pandas DataFrame处理除数为零的内容,请搜索本站过往文章或继续浏览后续相关文章,希望大家以后多多支持本站!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表