如何在Pandas中对分类值进行分组?

如何在Pandas中对分类值进行分组?,第1张

概述我正在尝试转换为分类值并在熊猫中分组. 例如,我尝试了以下内容: import pandas as pddf = pd.DataFrame()df['A'] = ['C1', 'C1', 'C2', 'C2', 'C3', 'C3']df['B'] = [1,2,3,4,5,6]df['A'] = df.loc[:,'A'].astype('category')df2 = df[0 我正在尝试转换为分类值并在熊猫中分组.

例如,我尝试了以下内容:

import pandas as pddf = pd.DataFrame()df['A'] = ['C1','C1','C2','C3','C3']df['B'] = [1,2,3,4,5,6]df['A'] = df.loc[:,'A'].astype('category')df2 = df[0:3]result = df2.groupby(by='A')['B'].nunique()print(result)

不幸的是,我得到了例外

file “C:\python34\lib\site-packages\pandas\core\internals.py”,line 86,in init
len(self.values),len(self.mgr_locs)))

ValueError: Wrong number of items passed 2,placement implIEs 3

编辑
不幸的是,@ jois提出的解决方法对我的应用程序不起作用.新的反例:

import pandas as pddf = pd.DataFrame()df['A'] = ['C1',pd.np.nan,'A'].astype('category')df2 = df[0:4]df2['A'] = df2['A'].cat.remove_unused_categorIEs()result = df2.groupby(by='A')['B'].nunique()print(result)
解决方法 正如评论中所提到的,这是大熊猫0.17.0的回归,并在此报道: https://github.com/pydata/pandas/issues/11635

作为现在的解决方法,您可以通过apply轻松使用nunique SerIEs方法,而不是直接在groupby对象上调用它:

In [22]: df2.groupby(by='A')['B'].apply(lambda x: x.nunique())Out[22]:AC1    2C2    1C3    0name: B,dtype: int64

你遇到的另一个问题是remove_unused_categorIEs()也是一个BUG,这将在0.17.1(https://github.com/pydata/pandas/pull/11639)中修复

总结

以上是内存溢出为你收集整理的如何在Pandas中对分类值进行分组?全部内容,希望文章能够帮你解决如何在Pandas中对分类值进行分组?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1196021.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存