Python 对组中的唯一值进行计数
我有这样一个数据帧:Python 对组中的唯一值进行计数,python,pandas,group-by,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_idgroupbyid和value的唯一计数: 1 a 3 2 b 1 3 c 1 但当我这样做的时候: result=df
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
groupbyid
和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
的前两行不会组合在一起
我怎样才能解决这个问题?非常感谢 对我来说,你的解决方案很好地处理了样本数据 正如在评论中提到的@YOBEN_S,追踪白种可能存在问题,那么解决方案是添加:
对我来说,你的解决方案很好,检查你的两个a,可能有白色空格哦,是的!谢谢你,你说得对!有空白。你的代码现在适合我了。非常感谢!
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