python - 用数据框中组的平均值替换列值
问题描述
我有一个 DataFrame 作为
Page Line y
1 2 3.2
1 2 6.1
1 3 7.1
2 4 8.5
2 4 9.1
我必须用组中的平均值替换 y 列。我可以使用此代码使用一列进行分组。
df['y'] = df['y'].groupby(df['Page'], group_keys=False).transform('mean')
我试图通过“页”和“行”的组来替换 y 的值。像这样的东西,
Page Line y
1 2 4.65
1 2 4.65
1 3 7.1
2 4 8.8
2 4 8.8
我在这个网站上搜索了很多答案,但找不到这个应用程序。将 python3 与熊猫一起使用。
解决方案
您需要列名列表,groupby
参数by
:
by:映射、函数、标签或标签列表
用于确定 groupby 的组。如果 by 是一个函数,它会在对象索引的每个值上调用。如果传递了 dict 或 Series,则 Series 或 dict VALUES 将用于确定组(Series 的值首先对齐;请参阅 .align() 方法)。如果传递了 ndarray,则按原样使用这些值来确定组。一个标签或标签列表可以通过 self 中的列传递给 group。请注意,元组被解释为(单个)键。
df['y'] = df.groupby(['Page', 'Line'])['y'].transform('mean')
print (df)
Page Line y
0 1 2 4.65
1 1 2 4.65
2 1 3 7.10
3 2 4 8.80
4 2 4 8.80
您的解决方案应更改为这种语法糖 - 在列表中传递系列:
df['y'] = df['y'].groupby([df['Page'], df['Line']]).transform('mean')
推荐阅读
- sql-server - 如何为同一列更新具有不同值的多行?
- git - 如何使用 git 部署 web 应用程序,而不必在每次部署时都更改应用程序目录?
- swagger - NSwag:在 IIS 上找不到 404 /swagger/v1/swagger.json
- node.js - 打字稿 - 将导入的对象断言为类静态属性
- html - 位置粘性CSS
- python - Tkinter - 与画布的内存泄漏
- jquery - 将数据从 UISearchBar 发送到 jQuery
- javascript - 如何将我的 onClick 事件的值传递给我的第二个函数?
- python - 内部装饰器函数如何看到装饰函数参数?
- nightwatch.js - 如何检查下一个测试用例然后 browser.verify.ok 失败