我有一个这样的数据框:
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_id
和id
分组的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
因此具有相同id
和value
的前两行不会分组在一起。
我该如何解决?非常感谢!
答案 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