导入CSV和总和特定字段

时间:2018-02-11 09:28:53

标签: python csv

我有一个我要导入的CSV文件,并对第二个字段求和,"收入"。这是我目前的代码,我从其他帖子拼凑而成,但无法使其工作。任何帮助将不胜感激!

错误类型:

  1. ValueError:基数为10的int()的文字无效:''
  2. 总数不正确。例如,如果数字被简化并且读数:10,20,30,40,而不是sum = 100,则表示sum = 10
  3. 代码:

    import csv
    
    import pandas as pd
    
    f = open('Sample Data.csv')
    f.next() #Skip record 1 aka header row
    
    total = 0
    for row in f:
        total += int(row[[1]])
    
    print total
    

    Sample Data

1 个答案:

答案 0 :(得分:0)

您必须清理数据 - 您的值中包含$,个字符,因此无法转换为整数。此外,它们有一个小数部分,因此它们最好被视为浮点数。

然而,在此之前,您将文件作为纯文本文件打开 - 不是通过csv,也不是作为熊猫数据框,尽管您已导入这些模块。作为一个文本文件,你的代码没有行和列的概念 - 迭代器中的每个row只是一个简单的字符串。

这里修复了这些问题 - 将其作为csv读取,并清理 - 在转换之前用空字符串替换2个有问题的字符:

with open('Sample Data.csv', 'r') as f:
    reader = csv.reader(f)
    reader.next()  # skipping the header row

    total = 0
    for row in reader:
        value = row[1].replace('$', '').replace(',', '')  # and any other replacements your data may need
        value = float(value)
        # value = int(value)  # if you want to treat the data as integers anyway
        total += value