首页 > 解决方案 > 使用 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()

我需要对重复的名称进行分组并对它们的值求和。

标签: python

解决方案


使用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

推荐阅读