如何平均熊猫中组范围的值?

时间:2021-06-30 17:02:10

标签: python python-3.x pandas

我有这个数据框。我想将年龄范围设为 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

1 个答案:

答案 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