如何在列中显示唯一值以及在下一列中显示相应值的总和?

时间:2016-02-02 03:12:56

标签: python sum

如果我的输入有一个产品列表,并且它的数量用空格分隔,我想制作一个python代码,它将输出产品的唯一值和每个产品的数量总和。

输入:

Product1 3
Product2 3
Product3 6
Product2 5
Product1 1
Product1 2
Product321 4
Product4 2
Product5 3
Product3 4
Product1 1
Product2 2
Product5 4
Product321 5

输出:

Product1 7
Product2 10
Product3 10
Product4 2
Product5 7
Product321 9

2 个答案:

答案 0 :(得分:1)

如何打开/阅读文件:How to Open a file through python

如何总结事物中的重现:item frequency count in python

如何在python中分割字符串:How to split a string into a list?

把它们放在一起我想出了这个:

from collections import defaultdict

info = defaultdict(int)

with open("PATH_TO_INPUT","r") as f_in:
    for line in f_in:
        name,number = line.split(" ")
        info[name]+=int(number)

with open("PATH_TO_OUTPUT","w") as f_out:
    f_out.write("\n".join("%s %s"%pair for pair in info.items()))

它并不像它可能的那样冗长,但是这项任务的每一个方面都在其他地方得到了很好的描述。

答案 1 :(得分:0)

欢迎使用堆叠溢出。您知道,这是您请求其他人更正代码的地方,而不是为您编写代码。您需要先尝试一下,如果您的实施存在问题,如果您在尝试一段时间后无法修复它,可以询问如何修复它。

在这里,让我给你一些解决问题的提示:

  1. 安装Pandashttp://pandas.pydata.org/)。
  2. 了解命令

    2.1。 read.csv

    2.2。 group_by

    2.3。 agg

    2.4。 reset_index

  3. 使用这些,您应该能够在一行文本中完成问题。请试试。