Groupby不唯一性与唯一性与分类数据

时间:2018-07-16 18:08:23

标签: python pandas dataframe count pandas-groupby

我有一个数据帧,并通过掩码过滤后,用groupby执行了unique。我的石斑鱼系列是绝对的。我正在使用Python 3.6.0 / Pandas 0.19.2。

df1 = pd.DataFrame({'sku': ['A0', 'A0', 'A2', 'A2', 'A3', 'A3'],
                    'ID': ['10', 'T1', 'T1', 'T2', '10', '20']})

df1['sku'] = df1['sku'].astype('category')
res = df1[df1['ID'].str[0] == 'T'].groupby('sku')['ID'].unique()

sku
A0        [T1]
A2    [T1, T2]
A3          []
Name: ID, dtype: object

这按预期工作。现在,有了nunique,我期望得到[1, 2, 0]

但是我看到[1, 1, 0]

res = df1[df1['ID'].str[0] == 'T'].groupby('sku')['ID'].nunique()

sku
A0    1
A2    1
A3    0
Name: ID, dtype: int64

如果我省略了对分类的转换,则结果符合预期:

res = df1[df1['ID'].str[0] == 'T'].groupby('sku')['ID'].nunique()

sku
A0    1
A2    2
Name: ID, dtype: int64

为什么根据石斑鱼的分类结果不同?

1 个答案:

答案 0 :(得分:0)

这是〜0.17版本中的known bug,已在〜0.21 +中修复。