我有一个数据帧,并通过掩码过滤后,用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
为什么根据石斑鱼的分类结果不同?