我有一个pandas数据框,如下所示:
index ID Val
1 BBID_2041 1
2 BBID_2041 1
3 BBID_2041 3
4 BBID_2041 1
5 BBID_2041 2
6 BBID_2041 1
7 BBID_2041 1
8 BBID_20410 1
9 BBID_20410 1
10 BBID_20410 5
11 BBID_20410 1
现在我想将列Val中的每个值除以该组中存在的ID总数。例如,我想将索引1到7的值除以7,因为ID BBID_2041总共有7行,依此类推。我可以使用循环,但这可能是一个快速的方法。
答案 0 :(得分:2)
使用transform
df['New']=df.groupby('ID').Val.transform(lambda x : x/len(x))
df
Out[814]:
index ID Val New
0 1 BBID_2041 1 0.142857
1 2 BBID_2041 1 0.142857
2 3 BBID_2041 3 0.428571
3 4 BBID_2041 1 0.142857
4 5 BBID_2041 2 0.285714
5 6 BBID_2041 1 0.142857
6 7 BBID_2041 1 0.142857
7 8 BBID_20410 1 0.250000
8 9 BBID_20410 1 0.250000
9 10 BBID_20410 5 1.250000
10 11 BBID_20410 1 0.250000