Traceback (most recent call last):
File "F:/workspace/sign_rate 4.0/machine_learning/sign_rate.py", line 364,in<module>
p.predict(begin_date="2019-10-01")
File "F:/workspace/sign_rate 4.0/machine_learning/sign_rate.py", line 196,in predict
return self.get_complete_proportion_sign_rate(subdivide, mode)
File "F:/workspace/sign_rate 4.0/machine_learning/sign_rate.py", line 228,in get_complete_proportion_sign_rate
return self.get_month_cpsr(self.df, subdivide, mode)
File "F:/workspace/sign_rate 4.0/machine_learning/sign_rate.py", line 248,in get_month_cpsr
return self.get_category_cpsr(df, subdivide, mode)
File "F:/workspace/sign_rate 4.0/machine_learning/sign_rate.py", line 285,in get_category_cpsr
for cate, df_cate in df_area.groupby(by=subdivide):
File "F:\envs\data_analysis\lib\site-packages\pandas\core\generic.py", line 7894,in groupby
**kwargs
File "F:\envs\data_analysis\lib\site-packages\pandas\core\groupby\groupby.py", line 2522,in groupby
return klass(obj, by,**kwds)
File "F:\envs\data_analysis\lib\site-packages\pandas\core\groupby\groupby.py", line 391,in __init__
mutated=self.mutated,
File "F:\envs\data_analysis\lib\site-packages\pandas\core\groupby\grouper.py", line 652,in _get_grouper
ifnotisinstance(gpr, Grouping)
File "F:\envs\data_analysis\lib\site-packages\pandas\core\groupby\grouper.py", line 259,in __init__
self.grouper = _convert_grouper(index, grouper)
File "F:\envs\data_analysis\lib\site-packages\pandas\core\groupby\grouper.py", line 681,in _convert_grouper
iflen(grouper)!=len(axis):
TypeError:len() of unsized object
主要错误代码:
subdivide = np.where(subdivide isNone, DefaultArgs.ID, subdivide)for area, df_area in df.groupby(DefaultArgs.AREA):for cate, df_cate in df_area.groupby(subdivide):...
原因: groupby可接受的参数类型有:mapping, function, label, or list of labels,一般只用单个字符串或者多个字符串列表用于分组。代码中DefaultArgs.ID subdivide均为字符串,按说都不应该出现问题,然而却出现了该问题。究其原因:np.where返回的对象不是想象中的str格式,返回的是 out : ndarray,本以为np.where的效率较if...else的效率会高不少,却出现预计之外的错误。
修改:
subdivide = DefaultArgs.ID if subdivide isNoneelse subdivide