2014-11-26 12 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 파일의

bob 15 4 4 
tim 29  0 
anna 18  9 

나는 그것이 같은 행을 추가 할 필요는 15 + 4 + 4 팀이해야해야 29 + 0 그리고 어떤 공백을 무시해야합니다, 아무도 내가 파이썬 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 

그런데 헤더를 다루는 코드를 루프 이전으로 이동해야합니다. 그렇지 않으면 루프의 모든 반복에서이 작업을 실행합니다.