Python:和匹配列

Python:和匹配列,python,csv,Python,Csv,输入文件是 10/14/2017 21:02 11/04/2017 134 15 10/14/2017 21:02 11/04/2017 134 15 10/14/2017 21:02 11/04/2017 134 15 10/13/2017 20:58 11/03/2017 132 10 10/13/2017 20:58 11/03/2017 132 10 10/13/2017 20:58 11/0

输入文件是

10/14/2017 21:02  11/04/2017      134  15  
10/14/2017 21:02  11/04/2017      134  15  
10/14/2017 21:02  11/04/2017      134  15   
10/13/2017 20:58  11/03/2017      132  10  
10/13/2017 20:58  11/03/2017      132  10   
10/13/2017 20:58  11/03/2017      132  10  
10/13/2017 20:58  11/03/2017      132  10 
我希望输出为第5列中的值之和,以匹配第1列中的值

10/14/2017   45          //(ie. 15+15+15)   
10/13/2017   40          //(ie. 10+10+10+10)

有人能帮我看一下Python代码吗?

假设第1列中的日期是连续的,您可以逐行读取CSV,如果日期与前一个日期相同,请从该行添加第5列以保持一个连续的总数。如果日期不同,则输出总计,并在下一个日期从零开始重新启动总计。

您可以使用
集合中的
defaultdict

from collections import defaultdict

temp = defaultdict(int)

with open("testfile.csv", 'r') as infile:

    for line in infile:
        fields = line.split()
        temp[fields[0]] += int(fields[-1])

print(temp)

# defaultdict(int, {'10/13/2017': 40, '10/14/2017': 45})

处理此类问题的一个好方法是尝试将其分解为子问题,并分别解决每个子问题。此问题的细分可能是:

  • 如何提取输入文件中每行的内容?想想是什么把每一列分开
  • 如何为第0列中的每个值存储第5列的运行总数?您需要某种数据结构,理想情况下,这种结构可以让您快速查找列0值的总计
  • 完成后,如何将这些总计和第0列值写入输出文件

  • 我鼓励您在寻找他人提供代码之前,继续自己解决问题。

    使用pandas…?其Solaris服务器我没有pandas,我想使用CSVP。请显示您迄今为止做了哪些工作以及出现了哪些问题。这将更有帮助。使用
    -1
    更好,如@stamaimer所示。这项工作我得到了以下形式的输出defaultdict(int,{'10/13/2017':40,'10/14/2017':45}),谢谢stamaimer
    data = """10/14/2017 21:02  11/04/2017      134  15
    10/14/2017 21:02  11/04/2017      134  15
    10/14/2017 21:02  11/04/2017      134  15
    10/13/2017 20:58  11/03/2017      132  10
    10/13/2017 20:58  11/03/2017      132  10
    10/13/2017 20:58  11/03/2017      132  10
    10/13/2017 20:58  11/03/2017      132  10
    """
    
    result = {}
    
    for line in data.splitlines():
        key = line.split(' ')[0]
        value = line.split(' ')[11]
        if result.get(key):
            result[key] = result[key] + int(value)
        else:
            result[key] = int(value)
    print(result)