我有一个数据集,它查看向经理提交的报告,并希望创建一个显示这些计数的新列。
What I have:
ID ManagerID
101 105
102 103
103 105
104 103
105 110
输出:
ID ManagerID Count
101 105 0
102 103 0
103 105 2
104 103 0
105 110 2
我试过这样做:df['count'] = df.groupby(['ID'])['ManagerID'].transform('nunique')
这给我的数字实际上不等于任何值年代。有什么建议吗?
如果我理解正确的话,您可能需要:
df['count'] = df['ID'].map(df['ManagerID'].value_counts()).fillna(0, downcast='infer')
输出:
ID ManagerID count
0 1 5 0
1 2 3 0
2 3 5 2
3 4 3 0
4 5 10 2
如果您试图计算ID
的报告数量,那么以下操作将有效,但会产生与预期输出不同的结果,因为ID 4没有任何报告:
pd.merge(df,
df.ManagerID.value_counts().reset_index().rename(columns={"index": "ID", "ManagerID": "Count"}),
on="ID",
how="left",
suffixes=("", "_y")).fillna(0)
ID ManagerID Count
0 1 5 0.0
1 2 3 0.0
2 3 5 2.0
3 4 3 0.0
4 5 10 2.0