Python 使用pandas groupby获得尺寸和唯一计数的优雅方式
我有一个如下所示的数据帧Python 使用pandas groupby获得尺寸和唯一计数的优雅方式,python,pandas,dataframe,pandas-groupby,series,Python,Pandas,Dataframe,Pandas Groupby,Series,我有一个如下所示的数据帧 ID subject_id 3403 1 3478 1 3478 1 3478 1 3478 1 3478 1 3478 1 3481 1 3481 1 3481 3 3481 3 Id s_cnt r_cnt 3403 1 1 3478 1 6 3481 2 4
ID subject_id
3403 1
3478 1
3478 1
3478 1
3478 1
3478 1
3478 1
3481 1
3481 1
3481 3
3481 3
Id s_cnt r_cnt
3403 1 1
3478 1 6
3481 2 4
我想知道每个ID下唯一主题的大小和数量
所以,我尝试了下面的方法
df['s_cnt'] = df.groupby(['Id']).subject_id.nunique()
df['r_cnt'] = df.groupby(['Id']).size()
在一条生产线上是否有两种操作
任何优雅的方法都会有帮助,因为我必须将其应用于大数据
我希望我的输出如下所示
ID subject_id
3403 1
3478 1
3478 1
3478 1
3478 1
3478 1
3478 1
3481 1
3481 1
3481 3
3481 3
Id s_cnt r_cnt
3403 1 1
3478 1 6
3481 2 4
使用命名聚合,因为函数大小可以传递任何列,例如此处的subject_id或id,但对于nunique,必须传递列,用于唯一值的测试编号-此处的subject_id: 或: 编辑:对于较旧的熊猫版本,请使用重置索引,因为重置索引=False:
使用命名聚合,因为函数大小可以传递任何列,例如此处的subject_id或id,但对于nunique,必须传递列,用于唯一值的测试编号-此处的subject_id: 或: 编辑:对于较旧的熊猫版本,请使用重置索引,因为重置索引=False:
哦,哇…你有解决所有熊猫问题的办法。好极了谢谢,Upvoted如果我用你的精确解,我不知道;“我看不到groupby列ID。我可以知道为什么吗?@TheGreat-因为熊猫的版本比较老,给我一点时间。哦,哇……你有解决所有熊猫问题的办法。”。好极了谢谢,Upvoted如果我用你的精确解,我不知道;“我看不到groupby列ID。我可以知道为什么吗?”TheGreat-因为熊猫的版本比较老,请给我一点时间。
print (df1)
ID s_cnt r_cnt
0 3403 1 1
1 3478 1 6
2 3481 2 4
df1 = df.groupby('ID').agg(s_cnt = ('subject_id', 'nunique'),
r_cnt= ('subject_id', 'size')).reset_index()