我试着写一个创建桶的代码。由于要存储的列有很多十进制值,并且是object
数据类型,因此我将该列转换为float
类型。在类型转换之后,当运行箱子时,出现错误
下面是我的代码:
import pandas as pd
import numpy as np
df=pd.read_excel(r'D:Practice FilesAnirudh Exercise Skin India.xlsx')
#print(df)
#Conversion of str to int
df['Basepacksize'] = df['Basepacksize'].astype(str).astype(float)
#Pack Ranges/Sachets/Non-Sachets
bins= ['0','10','15','30','50','100']
df1=pd.cut(df['Basepacksize'], bins)
print(df1)
我希望它创建一个桶,但得到了这个错误:
Traceback (most recent call last):
File "C:UsersaniPycharmProjectspythonProjectmain7.py", line 11, in <module>
df1=pd.cut(df['Basepacksize'], bins)
File "C:UsersaniPycharmProjectspythonProjectvenvlibsite-packagespandascorereshapetile.py", line 293, in cut
fac, bins = _bins_to_cuts(
File "C:UsersaniPycharmProjectspythonProjectvenvlibsite-packagespandascorereshapetile.py", line 444, in _bins_to_cuts
labels = _format_labels(
File "C:UsersaniPycharmProjectspythonProjectvenvlibsite-packagespandascorereshapetile.py", line 578, in _format_labels
precision = _infer_precision(precision, bins)
File "C:UsersaniPycharmProjectspythonProjectvenvlibsite-packagespandascorereshapetile.py", line 644, in _infer_precision
levels = [_round_frac(b, precision) for b in bins]
File "C:UsersaniPycharmProjectspythonProjectvenvlibsite-packagespandascorereshapetile.py", line 644, in <listcomp> levels = [_round_frac(b, precision) for b in bins]
File "C:UsersaniPycharmProjectspythonProjectvenvlibsite-packagespandascorereshapetile.py", line 628, in _round_frac
if not np.isfinite(x) or x == 0:
TypeError: ufunc 'isfinite' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
Process finished with exit code 1
Improve question
本行;
if not np.isfinite(x) or x == 0:
x
的Datatype应为float
。
如果是任何其他数据类型,它会给你错误。