我有DF:
data = [["John","144","Smith","200"], ["Mia","220","John","144"],["Caleb","155","Smith","200"],["Smith","200","Jason","500"]]
data_frame = pd.DataFrame(data,columns = ["Name","ID","Manager_name","Manager_ID"])
data_frame
Run Code Online (Sandbox Code Playgroud)
OP:
Name ID Manager_name Manager_ID
0 John 144 Smith 200
1 Mia 220 John 144
2 Caleb 155 Smith 200
3 Smith 200 Jason 500
Run Code Online (Sandbox Code Playgroud)
我正在尝试计算“名称”列中每个人下报告的人数。
逻辑是:
计算单个报告的人数以及该链中报告的人数。例如史密斯;约翰和卡勒布向史密斯报告,所以2 + 1,而米娅向约翰报告(他已经向史密斯报告),所以总数为3。
对于杰森-> 1同样,因为史密斯向他报告,并且3个人已经向史密斯报告,所以总数为4。
我知道如何以某种递归的方式Python地做到这一点,有没有一种方法可以在Pandas中有效地做到这一点。有什么建议么?
预期的OP:
Name Number of people reporting
John 1
Mia 0
Caleb 0
Smith 3
Jason 4
Run Code Online (Sandbox Code Playgroud)