如何在Pandas中对分类值进行分组?
发布时间:2020-12-20 13:08:38 所属栏目:Python 来源:网络整理
导读:我正在尝试转换为分类值并在熊猫中分组. 例如,我尝试了以下内容: 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='
我正在尝试转换为分类值并在熊猫中分组.
例如,我尝试了以下内容: import pandas as pd df = 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) 不幸的是,我得到了例外
编辑 import pandas as pd df = 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]: A C1 2 C2 1 C3 0 Name: B,dtype: int64 你遇到的另一个问题是remove_unused_categories()也是一个bug,这将在0.17.1(https://github.com/pydata/pandas/pull/11639)中修复 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |