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