对CSV文件特定列求和

0 投票
2 回答
3365 浏览
提问于 2025-04-30 11:19

我有一个包含100列的csv文件。我想计算从第4列到第n列的总和。我可以计算单独一列的总和,但当我尝试对所有列进行计算时就失败了。以下是我目前的代码:

import decimal
import numpy as np
import os as os
import csv as csv
import re as re
import sys

col=10
values=[]
with open('test.csv', 'r') as f:
    reader = csv.reader(f)
    headers = reader.next()
    for line in reader:
    #print line
        line = [int(i) for i in line]
    col_totals = [sum(result) for result in zip(*line)]
    print col_totals
       #values.append(int(line[col]))
       #csum=sum(values)
    #print csum  

谢谢,

暂无标签

2 个回答

0

如果你想要对连续的行进行求和,这段代码可以帮你实现

i, j = 3, 5

with open('test.csv', 'r') as f:
    reader = csv.reader(f)
    headers = reader.next()
    table = list(reader)
    sums = [sum(float(elt) for elt in col) for col in zip(*table)[i:j]]

你也可以试试下面这段

requested = [4, 7, 12, 13, 21, 81]

with open('test.csv', 'r') as f:
    reader = csv.reader(f)
    headers = reader.next()
    table = list(reader)
    sums = [sum(float(elt) for elt in col) for i, col in enumerate(zip(*table)) if i in requested]
1

在pandas里,这个操作非常非常简单:

import pandas as pd
df = pd.read_csv(filename)
df[df.columns[4:]].sum()

如果你想要每一行的列总和,可以这样做:

df[df.columns[4:]].sum(1)

撰写回答