本文介绍了TypeError:按多列分组时,无法将bool转换为numpy.ndarray";的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!
问题描述
我想按两列对数据帧进行分组,以汇总每家商店的月平均销售额。
数据(fact pandas 数据帧):
store_id sku_id date quantity city city category month
0 354 31253 2017-08-08 1 Paris Paris Shirt 8
1 354 31253 2017-08-19 1 Paris Paris Shirt 8
2 354 31258 2017-07-30 1 Paris Paris Shirt 7
3 354 277171 2017-09-28 1 Paris Paris Shirt 9
4 174 295953 2017-08-16 1 London London Shirt 8
基于store_id或month的分组只能正常工作,但是当我尝试同时按store_id和month分组时,我得到:
groupby_month = fact['quantity'].groupby(fact['store_id', 'month'])
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-169-a8cffb72ab7c> in <module>
----> 1 groupby_month = fact['quantity'].groupby(fact['store_id', 'month'])
2
3
D:Anaconda3libsite-packagespandascoreframe.py in __getitem__(self, key)
2925 if self.columns.nlevels > 1:
2926 return self._getitem_multilevel(key)
-> 2927 indexer = self.columns.get_loc(key)
2928 if is_integer(indexer):
2929 indexer = [indexer]
D:Anaconda3libsite-packagespandascoreindexesase.py in get_loc(self, key, method, tolerance)
2655 'backfill or nearest lookups')
2656 try:
-> 2657 return self._engine.get_loc(key)
2658 except KeyError:
2659 return self._engine.get_loc(self._maybe_cast_indexer(key))
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine._get_loc_duplicates()
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine._maybe_get_bool_indexer()
TypeError: Cannot convert bool to numpy.ndarray
推荐答案
首先检查索引标签和列
fact.index
fact.columns
如果需要将索引转换为列,请使用:
使用:
fact.reset_index()
然后您可以使用:
fact.groupby(['store_id', 'month'])['quantity'].mean()
输出:
store_id month
174 8 1
354 7 1
8 1
9 1
Name: quantity, dtype: int64
或更好:
fact['mean']=fact.groupby(['store_id', 'month'])['quantity'].transform('mean')
print(fact)
store_id sku_id date quantity city city.1 category month
0 354 31253 2017-08-08 1 Paris Paris Shirt 8
1 354 31253 2017-08-19 1 Paris Paris Shirt 8
2 354 31258 2017-07-30 1 Paris Paris Shirt 7
3 354 277171 2017-09-28 1 Paris Paris Shirt 9
4 174 295953 2017-08-16 1 London London Shirt 8
mean
0 1
1 1
2 1
3 1
4 1
这篇关于TypeError:按多列分组时,无法将bool转换为numpy.ndarray";的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!
The End


大气响应式网络建站服务公司织梦模板
高端大气html5设计公司网站源码
织梦dede网页模板下载素材销售下载站平台(带会员中心带筛选)
财税代理公司注册代理记账网站织梦模板(带手机端)
成人高考自考在职研究生教育机构网站源码(带手机端)
高端HTML5响应式企业集团通用类网站织梦模板(自适应手机端)