dr *_*rry 3 python group-by aggregate-functions pandas
我正在关注这个例子,我想用熊猫重播.不幸的是,我几乎立即陷入困境:我不知道如何为所有行添加一个具有每个类别的平均值的列.
我的数据帧:
ages = pd.DataFrame(
[[13, 0.0, 1.0, 1.0],
[14, 0.0, 1.0, 0.0],
[15, 0.0, 1.0, 0.0],
[25, 1.0, 1.0, 1.0],
[35, 0.0, 1.0, 1.0],
[49, 1.0, 0.0, 0.0],
[68, 1.0, 1.0, 1.0],
[71, 1.0, 0.0, 0.0],
[73, 1.0, 0.0, 1.0]], columns=['age', 'gardening', 'gameing', 'hats'])
Run Code Online (Sandbox Code Playgroud)
我想为所有(不)做园艺的人添加一个平均年龄的栏目:
ages['ma'] = ages.groupby('gardening')['age'].mean()
Run Code Online (Sandbox Code Playgroud)
但这给了:
19.5
57.2
6 x NaN
Run Code Online (Sandbox Code Playgroud)
我想要(第一栏)
gardening age
19.5 0 13
19.5 0 14
19.5 0 15
57.2 1 25
19.5 0 35
57.2 1 49
57.2 1 68
57.2 1 71
57.2 1 73
^^
Run Code Online (Sandbox Code Playgroud)
我试过广播,转换,但这不是我想要的结果.我怎么解决这个问题?
使用groupby有transform:
ages['avg_garden_age'] = ages.groupby('gardening')['age'].transform('mean')
ages
Run Code Online (Sandbox Code Playgroud)
输出:
age gardening gameing hats avg_garden_age
0 13 0.0 1.0 1.0 19.25
1 14 0.0 1.0 0.0 19.25
2 15 0.0 1.0 0.0 19.25
3 25 1.0 1.0 1.0 57.20
4 35 0.0 1.0 1.0 19.25
5 49 1.0 0.0 0.0 57.20
6 68 1.0 1.0 1.0 57.20
7 71 1.0 0.0 0.0 57.20
8 73 1.0 0.0 1.0 57.20
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
94 次 |
| 最近记录: |