解决方案:TypeError:unsupported operand type(s) for -: ‘float‘ and ‘decimal.Decimal‘

文章讲述了在使用Pandas处理数据时,尝试计算增长率时遇到TypeError,原因在于数据集中存在零值导致分母为零。作者提供了将零值转换为非零数的方法,通过添加1来避免除以零的问题,强调了在数据分析中交流、实践和思考的重要性。
摘要由CSDN通过智能技术生成


一、现象

用Pandas 处理数据的时候,想得到增长率,没想到翻车了?

import pandas as pd

df = pd.read_csv('data.csv')

df['增长率'] =  ((df['今年'] - df['去年']) / (df['今年']))

执行一下语句发现报错
TypeError:unsupported operand type(s) for -: ‘float’ and ‘decimal.Decimal’
在这里插入图片描述

二、解决方案

df[df['今年'] == 0].head(3)

发现数据集里,有df[‘今年’]有的数据为0!!!

大家都知道分母不能为0,所以可以试下这下面的方法处理哈

def add_number(x):
	return x + 1

df['今年'] = pd.to_numeric(df['今年'], errors='coerce')
df['今年001'] = df['今年'].apply(add_number)
df.head(3)

df['增长率'] =  ((df['今年001'] - df['去年']) / (df['今年001']))
df.head(3)

解决方案:带疑问,多交流,勤动手,频思考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值