从 csv 文件计算行和列总计

Calculating row and column totals form csv files

我有以下关于家庭开支的 CSV 文件:

Family, Medical, Travel, Education
Smith, 346, 566, 45
Taylor, 56,837,848

我希望能够计算行总计和列总计。例如:

Smith = 346+566+45
Taylor = 56+837+848
Medical = 346+56
Travel = 566+837
Education = 45+848

到目前为止我有以下内容:

import csv
file = open('Family expenses.csv', newline='')
reader = csv.reader(file)

header = next(reader)
data = [row for row in header]
ndata = []
x = 0
for x in range(0, 3):
    for i in data[x]:
        i.split(',')
        x += 1
        ndata.append(i)

rdata = [int(s) if s.isdecimal() else s for s in ndata]

不需要pandas;使用 DictReader 使它变得简单:

import csv

file = open("Family expenses.csv", newline="")
reader = csv.DictReader(file, skipinitialspace=True)

results = {}
for row in reader:
    results[row["Family"]] = 0  # initialize result for each family name
    for key, value in row.items():
        if key == "Family":
            continue
        if key not in results:  # initialize result for each category
            results[key] = 0
        results[key] += float(value)  # add value for category
        results[row["Family"]] += float(value)  # add value for family name

for key, result in results.items():
    print(key, result)

我使用 skipinitialspace 因为你的 CSV 数据中有一些空格。

#Using a list in Python. Here you go

import csv
file = open('Family expenses.csv', newline='')
reader = csv.reader(file)
header = next(reader) #read first row & skip first row (header)
header.pop(0) #removing [0,0] first row first column for column wise sum heading
num_of_cols = len(header) #counting #columns
sum_col=[0,0,0] #a list for columnwise sum
j,temp=0,0
for row in reader:
    sum_row,i = 0,0
    print(row[0])
    for i in range(1,len(row)):
        sum_row+=int(row[i])
        sum_col[i-1]=int(sum_col[i-1])+int(row[i])
    print(sum_row)
print(header)
print(sum_col)`