我在stackoverflow https://stackoverflow.com/questions/31081953/split-csv-file-into-two-csv-files-based-on-the-content-of-a-column上找到了一个解决方案,用于将文件分成多个列,如下所示
import csv
from itertools import groupby
for key, rows in groupby(csv.reader(open("newone.csv")),
lambda row: row[0]):
with open("%s.csv" % key, "w") as output:
for row in rows:
output.write(",".join(row) + "\n")
这样做的工作正常,但我想打印出某些列中的数字总和以及第3和第4列,我该怎么做?
看看这张图片 - http://i.imgur.com/KIxLOnr.jpg
这段代码工作正常,但我需要生成橙色以及该图像中突出显示的最后一行(我手动添加那些)。我怎么能这样做?
答案 0 :(得分:0)
这会在每行末尾添加数字:
for row in rows:
output.write(",".join(row))
sum_of_certain_cols = row[2] + row[3]
output.write("," + sum_of_certain_cols + "\n")
如果你想把总和放在某个位置,你应该做insert
之类的:
sum_of_certain_cols = row[2] + row[3]
row.insert(4, str(sum_of_certain_cols))
output.write(",".join(row) + "\n")
评论后修改
不要忘记将列投射到数据类型,尽管我认为不再需要这一行,因为我了解您的需求:
sum_of_certain_cols = int(row[2]) + int(row[3])
如果你想在最后加总,你需要一个累加器,例如:
sums = [0] * len(rows)
然后在循环中做所有的总和:
sums[1] += int(row[1])
sums[2] += int(row[2])
然后在循环之后写下所有内容:
output.write(",".join(sum) + "\n")