df['Discount_rate'] = df['Discount_rate'].apply(str).apply(lambda x: float(x) if '.' in x else int(str(x)))报错invalid literal for int() with base 10: 'Discount_rate'
时间: 2024-02-01 12:02:41 浏览: 142
Python ValueError: invalid literal for int() with base 10 实用解决方法
这个错误提示看起来是因为你的数据中存在一些异常值,导致无法转换成浮点数或整数。
你可以尝试在转换前,先查看下该列中的数据是否全部符合要求。可以使用`value_counts()`方法查看该列中的不同取值。
另外,你也可以尝试将转换函数拆分成两部分,先将字符串转换成浮点数,再用`math.isnan()`判断是否为非数字类型,如果是,则将其转换成整数。
例如:
```
import math
def convert_discount_rate(x):
x = float(x)
if math.isnan(x):
return -1
elif '.' in str(x):
return x
else:
return int(x)
df['Discount_rate'] = df['Discount_rate'].apply(str).apply(convert_discount_rate)
```
这样处理后,如果有非数字类型的数据,会被转换成-1,便于后续处理。
阅读全文