计算熊猫群中的独特价值

时间:2020-02-20 14:21:08

标签: python pandas group-by

我有一个这样的数据框:

data = {'id': [1,1,1,2,2,3],
        'value': ['a','a','a','b','b','c'],
        'obj_id': [1,2,3,3,3,4]
}
df = pd.DataFrame (data, columns = ['id','value','obj_id'])

我想获取obj_idid分组的value组的唯一计数:

1 a 3
2 b 1
3 c 1

但是当我这样做时:

result=df.groupby(['id','value'])['obj_id'].nunique().reset_index(name='obj_counts')

我得到的结果是:

1 a 2
1 a 1
2 b 1
3 c 1

因此具有相同idvalue的前两行不会分组在一起。

我该如何解决?非常感谢!

1 个答案:

答案 0 :(得分:1)

对我来说,您的解决方案可以很好地处理示例数据。

就像在评论中提到@YOBEN_S可能是解决白人的问题,然后解决方案是添加Series.str.strip

data = {'id': [1,1,1,2,2,3],
        'value': ['a ','a','a','b','b','c'],
        'obj_id': [1,2,3,3,3,4]
}
df = pd.DataFrame (data, columns = ['id','value','obj_id'])

df['value'] = df['value'].str.strip()
df = df.groupby(['id','value'])['obj_id'].nunique().reset_index(name='obj_counts')
print (df)
   id value  obj_counts
0   1     a           3
1   2     b           1
2   3     c           1