请看下面的输入数据框。
df = pd.DataFrame({"Name": ['A','A','B','B','C'], 'Tag':[1,2,3,4,5], 'Field':['X','X','Y','Z','R'] })
Name Tag Field
0 A 1 X
1 A 2 X
2 B 3 Y
3 B 4 Z
4 C 5 R
我正在将“名称”列的计数作为名为“计数”的附加列查看,同时保留了“变量”和“字段”列的值。
预期产量:
Name Count Tag Field
0 A 2 1 X
1 A 2 2 X
2 B 2 3 Y
3 B 2 4 Z
4 C 1 5 R
我的尝试:
我可以用一个实现这一目标groupby
,并merge
和低于其。但是,我想我已经使这个问题复杂化了,正在寻找比我的更好的解决方案。请帮忙。
df1 = df.groupby("Name")['Tag'].count().reset_index()
df1 = df1.rename(columns={'Tag' : 'Count'})
df1 = df1.merge(df, on='Name', how='left')
您需要的IIUC transform
:
df["count"] = df.groupby("Name")["Tag"].transform("size")
print (df)
Name Tag Field count
0 A 1 X 2
1 A 2 X 2
2 B 3 Y 2
3 B 4 Z 2
4 C 5 R 1
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句