Python Numpy类型错误:ufunc 'isfinite'不支持输入类型排查
解决pd.cut分箱时的TypeError错误
错误原因
你定义的分箱边界bins是字符串类型列表['0','10','15','30','50','100'],而pd.cut要求分箱边界必须为数值类型(int或float)。字符串类型的边界会导致内部数值处理逻辑失效,触发ufunc 'isfinite' not supported类型错误。
修正后的代码
import pandas as pd import numpy as np df = pd.read_excel(r'D:\Practice Files\Anirudh Exercise Skin India.xlsx') # 安全转换object类型为float:自动处理无法转换的异常值为NaN df['Basepacksize'] = pd.to_numeric(df['Basepacksize'], errors='coerce') # 将分箱边界改为数值类型 bins = [0, 10, 15, 30, 50, 100] df1 = pd.cut(df['Basepacksize'], bins) print(df1)
关键优化点
- 替换
astype(str).astype(float)为pd.to_numeric(errors='coerce'):更安全的类型转换方式,能自动将非数值内容转为NaN,避免直接强制转换报错 - 把字符串类型的
bins改为数值列表:确保pd.cut能正确识别分箱区间,执行数值判断和分箱操作
内容的提问来源于stack exchange,提问作者Anirudh Sudarsan
相关产品推荐
相关产品推荐

