2014-11-26 2 views
0
def sumRows(filename, header=False): 
d = {} 
total = 0 
with open ('{0}'.format(filename)) as csvfile: 
    rdr = csv.reader(csvfile) 
    for row in rdr: 
     if(header==True): 
      rdr.next() 
      # skips first row if header is set to true 
      continue 
      total = ? 
      # function I do not know how to do 
      d[row[0]] = total 
print(d) 

Пример файла CSV:Добавление строк в CSV-файлов в Python

bob 15 4 4 
tim 29  0 
anna 18  9 

мне нужно добавить строки как, боб должно быть 15 + 4 + 4, тим она должна быть 29 + 0, и он должен игнорировать любые пробелы, может ли кто-нибудь понять, как я могу это сделать в python 3? Он должен напечатать в виде словаря

ответ

0

Если вы можете использовать панда, вы можете сделать это просто следующим образом:

import pandas as pd 
df = pd.read_csv('data.csv', header=None).set_index(0) 
print(df.sum(axis = 1)) 

P.S. read_csv читает csv по умолчанию ',' как разделитель. Для изменения разделителя можно использовать аргумент sep.

0

Вам нужно преобразовать текстовые ячейки в число, игнорируя пустые ячейки, а затем sum.

def sum_rows(filename, header=False): 
    d = {} 
    with open(filename) as csvfile: 
     rdr = csv.reader(csvfile, delimiter='\t') 
     if header: 
      rdr.next() 
     for row in rdr: 
      d[row[0]] = sum(int(s) for s in row[1:] if s.strip() != '') 
    return d 

Кстати, вы также должны переместить код, относящийся к заголовку, перед циклом; в противном случае он будет работать на каждой итерации цикла.

Смежные вопросы