python - 使用 Python 计算表上出现的字符串
问题描述
假设我有一个表,其中有一个名称和一个值,例如:
NAME VALUE
Artur 2
Cristian 3
Artur 4
Peter 5
Cristian 8
Artur 2
我需要隔离名称和值的总和,例如:
NAME VALUE
Artur 8
Cristian 11
Peter 5
我怎么做?
我尝试拆分每一行以隔离值,但我只是不知道如何识别重复的名称。
data = open ('data.txt', 'r')
for line in data:
value = line.split()
我需要对重复的名称进行分组并对它们的值求和。
解决方案
使用pandas,非常强大的工具:
data = pd.read_csv(fname, sep = "\s+|\t+|\s+\t+|\t+\s+")
by_name_df = data.groupby(by="NAME").sum()
print(by_name_df)
第一行会将 csv 读入带有连续分隔符的数据帧(如果您还有任何空白和连续的分隔符)。第二行按NAME
列分组并求和,按名称生成总和的输出数据框。
如果您希望名称保留为一列而不是新数据框中索引的一部分,请使用以下命令:
by_name_df = data.groupby(by="NAME",as_index=False).sum()
生成的输出:
NAME VALUE
Artur 8
Cristian 11
Peter 5
推荐阅读
- lua - 如何在 StackExchange.Redis 中正确加载 Lua 脚本?
- vue.js - Vue webpacks 的不同类型,如果需要在 vue 中构建主题,哪个适合选择?
- pixi.js - 在 PixiJS 中,是否可以在透明渲染纹理中应用混合模式与后面的图层一起使用?
- amazon-web-services - 为现有资源生成 cloudformation,负载均衡器迁移
- sql - ORACLE 中的函数
- javascript - 如何在运行“npm run build”命令时消除错误?
- hibernate - 领域对象的异步处理(Grails 2)
- python - Python String.replace() 是否有更快的替代方案
- python - python for循环使用索引在数据框中创建值
- python - 映射在 Elasticsearch 中究竟做了什么?