python - 对 CSV 文件的列(不包括标题)应用操作并更新最后一行的结果
问题描述
我有一个这样创建的 CSV 文件:
keep_same;get_max;get_min;get_avg
1213;176;901;517
1213;198;009;219
1213;898;201;532
现在我希望将第四行附加到现有的 CSV 文件中,如下所示:
First column: Remains same: 1213
Second column: Get max value: 898
Third column: Get min value: 009
Fourth column: Get avg value: 422.6
所以最终的 CSV 文件应该是:
keep_same;get_max;get_min;get_avg
1213;176;901;517
1213;198;009;219
1213;898;201;532
1213;898;009;422.6
请帮助我实现同样的目标。不是强制使用Pandas
.
提前致谢!
解决方案
df.agg(...)
接受一个字典,其中字典键是列的名称,值是执行所需聚合的字符串:
df_agg = df.agg({'keep_same': 'mode', 'get_max': 'max',
'get_min': 'min', 'get_avg': 'mean'})[df.columns]
产生:
keep_same get_max get_min get_avg
0 1213 898 9 422.666667
然后你只需附加df_agg
到df
:
df = df.append(df_agg, ignore_index=False)
结果:
keep_same get_max get_min get_avg
0 1213 176 901 517.000000
1 1213 198 9 219.000000
2 1213 898 201 532.000000
0 1213 898 9 422.666667
请注意,附加行的索引是0
。ignore_index=True
如果你愿意,你可以通过附加。
另请注意,如果您计划大量执行此附加操作,则会非常慢。在这种情况下确实存在其他方法,但对于一次性或仅几次,附加是可以的。
推荐阅读
- php - SQLSTATE [42000]:语法错误或访问冲突:1064-连接不同的表
- c# - 定义表达式树的最简洁方法?
- node.js - 即使使用 v1.2.5,Node.js 也极少出现安全问题
- c - 找不到带有 CATALINA 的 qt 或 x11 终端 gnuplot
- node.js - webdriver.Capabilities.phantomjs 不是一个函数
- c# - 具有后台服务和 MVC 应用程序的单个 .Net Core 3.1 项目
- c# - 反序列化匿名对象
- c# - 使用 C# 从具有实体框架函数的表中删除所有行
- c# - Visual Studio (VS) 2019 16.6.0 Preview 1.0 iOS app 无法打开故事板
- pandas - Pandas 数据框多索引和分组依据