我有这个数据框。我想将年龄范围设为 1-5、6-10、11-15 等,并按平均值设置该范围内的所有值。
Name Age
0 x 5
1 y 7
2 z 2
3 p 9
4 q 12
5 r 6
6 s 5
7 t 1
8 u 13
9 v 10
现在我想添加一列 ageGroup,其中将包含所需范围的 mean。这里 1-5 是一个范围。所以所有这些之间的年龄将意味着价值。这里,(5+2+5+1) // 4 = 3。类似地,范围 11-15 将是 (12+13) // 2 = 12。
所以,预期的输出是。
Name Age ageGroup
0 x 5 3
1 y 7 8
2 z 2 3
3 p 9 8
4 q 12 12
5 r 6 8
6 s 5 3
7 t 1 3
8 u 13 12
9 v 10 8
答案 0 :(得分:3)
您可以使用 pd.cut
对数据进行 bin 处理,然后您可以与 groupby 一起使用:
max_age = 15
step = 5
df['ageGroup'] = df.groupby(pd.cut(df['Age'],
range(0,max_age+step,5)))['Age'].transform('mean').round()
print(df)
Name Age ageGroup
0 x 5 3.0
1 y 7 8.0
2 z 2 3.0
3 p 9 8.0
4 q 12 12.0
5 r 6 8.0
6 s 5 3.0
7 t 1 3.0
8 u 13 12.0
9 v 10 8.0